Swift/개념 & 응용

[Swift] "public typealias AnyObject" (짧)

유정주 2022. 10. 23. 13:41
반응형

AnyObject

AnyObject가 프로토콜이라는 것은 많은 분들이 아실 거에요.

 

근데 공식문서를 보니 AnyObject가 Protocol이 아니라 Type Alias라고 적혀있는거에요?

 

원래 프로토콜은

이렇게 Protocol이라고 적혀있잖아요..??

근데 AnyObject는 왜 Type Alias라고 적혀있을까? 라는 생각이 들었습니다. (1차 혼란)

 

그래서 AnyObject를 타고 들어가서 보니 

typealias로 적혀있더라고요.

근데 좀 어색하지 않나요?

원래 typealias는 OOO = 타입으로 옆에 어떤 타입인지 적혀 있어야 합니다.

근데 AnyObject에는 아무것도 없는거에요... (2차 혼란)

 

이에 대해 검색해보니 이미 누가 스택오버플로우에 올렸더라고요.

알고보니 원래 코드에는 정상적으로 타입이 설정되어 있었습니다.

(Buildin 의 프로토콜..?인거 같은데 Builtin에 들어가 봐도 안 나와 있어서 정확히 알 수는 없네요. 프로토콜이라고 하니 프로토콜이겠죠?)

 

함께 알게된 점은 우리가 Xcode에서 보는 코드는 "전체 코드"가 아니라는 점입니다.

Xcode에서 보이는 코드들은 공개가 가능한 범위 내에서 제공하는 슈도 코드였습니다

그래서 위 코드처럼 문법에 맞지 않는 내용이 있어도 컴파일 에러가 발생하지 않고 돌아갈 수 있는 거에요.

 

마무리

얼렁뚱땅 마무리인데요 ㅎㅎ;

혹시나... 같은 것을 궁금해 하시는 분이 계실까 하여 공유하는 차원에서 포스팅합니다.

한글 정보는 없더라고요. ㅎㅎ

 

감사합니다!

 

참고

https://stackoverflow.com/questions/54603668/how-does-the-statement-public-typealias-anyobject-make-anyobject-a-protocol

https://github.com/apple/swift/blob/main/stdlib/public/core/Policy.swift


아직은 초보 개발자입니다.

더 효율적인 코드 훈수 환영합니다!

공감 댓글 부탁드립니다.

 

 

반응형