델리게이트 패턴에서 제네릭으로 – Swift

(제목이 스포일러이긴한데…) 간단한 클래스를 하나 작성해보자. 0으로 시작하는 값에서 메소드를 하나를 호출하면 그 값을 1씩 증가시켜나가는 것이다. class Counter {   var value: Int = 0   func increase() {     value += 1     print(“value: \(value)”)   } } 현실적으로는 별 쓸 데 없는 이 클래스를 사용하려 할 때, 값이 변할 때 수행하는 동작을 입맛에 맞게 커스터마이징하고 싶은 경우가 있을 수 있다. 물론 increase() 메소드를 그 때 그 때마다 변경하면

제네릭타입을 활용한 델리게이트 패턴

델리게이트는 보통 특정한 이벤트처리를 위해서 코코아에서 가장 널리 사용되는 패턴 중 하나이다.  델리게이트를 구현하기 위해서는 보통 다음의 준비를 가져야 한다. 델리게이트 메소드를 호출하려는 객체(호스트라고 하자)는 델리게이트의 클래스가 무엇인지 알 필요가 없고, 사실 알 수도 없다. 따라서 델리게이트 메소드들은 별도의 프로토콜에 정의한다. 호스트는 프로토콜을 따르는 익명의 타입의 델리게이트 프로퍼티를 갖는다. 이 때 델리게이트는 존재할 수도, 존재하지