프로그래밍/Swift
class 키워드와 AnyObject 키워드
시르베어
2025. 2. 2. 23:04
오늘 공부한 Protocol에 대한 내용을 보던 중 몇가지 내용이 궁금해서 찾아보다 쓴 글이다.
Swift 기초 공부4의 마지막 내용에서 예제를 작성하다가 경고가 떠서 찾아보았다.
class 키워드를 사용하면 해당 프로토콜은 클래스에서만 채택이 가능하다.
- class 키워드를 쓰면 경고가 뜨면서 AnyObject로 바꾸라고 한다
- 경고 : Using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
- 결론 : class 키워드는 더 이상 사용하지 않으니 AnyObject로 바꾸라고 한다
- 해당 내용을 찾아보니 옛날(?), 과거(?)에는 이걸로 사람들간에 의견이 분분했다는것 같다
- 궁금해서 찾다가 발견한 글 (역시 zedd님) : https://zeddios.tistory.com/508
AnyObject(옛 class) 키워드를 쓰는 이유
- https://stackoverflow.com/questions/27554034/why-use-class-only-protocols-in-swift
- 간단 설명 : weak(약한참조)를 사용하려고 할때 약한 참조는 참조 타입에서만 가능하므로 AnyObject 키워드를 사용해 값 타입은 해당 프로토콜을 채택하지 못하게 만든다고 한다