- Delegate 패턴을 사용하면서 Protocol을 만들 때 왜 Protocol을 AnyObject로 타입을 선언하여야 할까요?
Protocol 생성시 AnyObject 상속받기
- delegate는 reference cycle을 피하기 위해 weak(약한 참조)를 사용해야 함
- delegate protocol은 weak(약한 참조)를 위해 클래스 전용이여야 한다.
인스턴스화 하여 참조할 때 Retain이 생긴다. 왜 프로토콜이 클래스나 구조체가 아닌데 Retain Cycle이 생길까요?
- 예를 들어 클래스 a와 b가 서로를 protocol로 참조하게 되면 강한 참조가 되면서 Retain Cycle이 발생하는 것이다. 그래서 weak를 선언하여 reference count를 늘리지 않도록 해주는 것이 메모리 누수를 막을 수 있다.