Delegate 패턴을 사용할때 순환참조를 막기위해 protocol에 AnyObject를 상속 받습니다. AnyObject를 상속받지 않을시 delegate앞에 weak를 붙일경우 오류가 생기는것을 볼 수 있습니다.
'weak' must not be applied to non-class-bound 'DrawWaveFormManagerDelegate'; consider adding a protocol conformance that has a class bound 라는 에러가 뜹니다. 해석하자면 weak는 class에 타입에서만 사용가능한데, 해당 프로토콜은 어디서 사용할 지 모르니 weak를 붙일수 없다고 합니다. 그렇다면 class를 붙이면 되는데 왜 AnyObject를 붙여야 할까요?
Zedd님 블로그에 그 내용이 나와있는데요, 간단하게 요약하자면 AnyObject와 Class는 서로 같다고 합니다. Class 내부에 AnyObject가 typealias로 선언되어있습니다. 다만 아직 class가 개발이 완료(?) 되지 않아서 대리자로 AnyObject로 사용한다는 것 같습니다.
'iOS > swift' 카테고리의 다른 글
프로토콜 지향 프로그래밍을 이용한 프로젝트를 진행해보자 (1) (0) | 2022.08.13 |
---|---|
POP에서는 모든 코드가 프로토콜로 시작을 해야 할까? (0) | 2022.08.10 |
약한참조, 강한참조 (weak, strong) (0) | 2022.06.11 |
Swift에서의 startsWith 구현 (0) | 2021.09.10 |
백준 1085번: 직사각형에서 탈출(Swift) (0) | 2021.08.31 |