-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
AnyObject와 class 차이에 대해 설명해주세요. #40
Comments
AnyObject란 모든 클래스들이 암묵적으로 준수하는 프로토콜입니다. AnyClass는 모든 클래스 타입들이 암묵적으로 준수하는 프로토콜입니다. 둘의 공통점으로는 타입의 유연함을 제공한다는 특징이 있지만, AnyObject는 클래스 인스턴스와 타입 모두에 대해 유연함을 제공하고 AnyClass는 클래스의 타입에 대해서만 유연함을 제공한다는 차이가 있습니다. |
AnyObject의 경우 프로토콜의 상속 목록에 추가하여 프로토콜 채택을 오직 클래스만으로 제한할 수 있는 프로토콜입니다. 근데 이거랑 별개로 class only protocol로 제한하기 위해서 사용할 때 |
AnyObject는 모든 클래스들이 준수하는 프로토콜입니다. 그래서 프로토콜에 AnyObject를 채택하면 해당 프로토콜은 클래스만 채택하도록 제한할 수 있습니다. |
🙋🏻 답변AnyObject는 모든 클래스들이 암묵적으로 채택하고 있는 프로토콜입니다. 모든 클래스 타입을 나타내는 프로토콜로 클래스라면 모두 AnyObject로 업캐스팅 될수도 있습니다. AnyObject는 주로 다양한 Class 타입을 하나의 리스트에 담을 때 리스트의 타입으로 사용할 수 있고, 특정 프로토콜을 Class만 채택할 수 있도록 만들기 위해 사용할 수도 있습니다. 특히 delegate 패턴에서 순환참조를 방지하기 위해 weak 키워드를 사용하는데, 이 때 delegate 프로토콜에 AnyObject를 채택하여 참조 타입으로 만들어주어 weak 키워드를 사용할 수 있게 만들어줄 수 있습니다. class도 AnyObject와 유사하게 동작하게 할 수 있습니다. 하지만 이는 class의 정의에서 typealias로 AnyObject에서 이름만 바꾼것이라 사실상 동일하다고 볼 수 있습니다. 🏷️ 키워드
|
No description provided.
The text was updated successfully, but these errors were encountered: