내가 이해한데로 정리해보는 텍스트필드(델리게이트 패턴으로 구현되어있음) 에서의 델리게이트 패턴
델리게이트 패턴으로 구현되어 있음
델리게이트 패턴이란 ?
프로토콜을 채택하는 방법을 통해 객체간의 소통이 가능하도록 구현한 패턴
어떻게 소통할까?
대리자(delegate)를 통해서 소통한다
이 delegate 는 관련 프로토콜 타입으로 확정되어있다(옵셔널)
=> 즉 해당 프로토콜을 채택한 타입은 대리자로 위임이 가능하다
=> 정리 : 관련 프로토콜을 채택한 타입은 delegate 즉 대리자를 지정해서 동작을 위임할 수 있다 (한쪽 객체에서 일어난 일을 다른 쪽 객체에서 구현해줄 수 있다)
왜 프로토콜로 구현했을까?
개발자가 어떤 형식의 커스텀타입(class struct 등) 을 만들어서 사용할지 알 수 없기 때문에 특정 프로토콜을 채택한 타입이면 대리자로 위임이 가능하도록 즉 범용성을 넓혀놓은 것이다.
이 경우에는 UIViewController 가 텍스트delegate관련 프로토콜을 채택하고 텍스트필드를 내부에 생성 후 텍스트필드의 대리자로 UIViewController를 지정(self로 가르키기)하여 텍스트필드의 대리자로써 UIViewController를 사용한다.
즉 textField(실제로는 UITextField 타입으로 확정된 속성인)가 받아오는 동작들을 UIViewController 내부에서 프로토콜 메서드들의 내용을 구체적으로 구현해서 대리로 화면에 적용하는 방식으로 동작한다.
이미 프로토콜에 만들어져있는(필수구현이 아닌 경우가 훨씬 많은) 메서드들의 내용만 구현해주면 된다.