AnyObject
AnyObject가 프로토콜이라는 것은 많은 분들이 아실 거에요.
근데 공식문서를 보니 AnyObject가 Protocol이 아니라 Type Alias라고 적혀있는거에요?
원래 프로토콜은
이렇게 Protocol이라고 적혀있잖아요..??
근데 AnyObject는 왜 Type Alias라고 적혀있을까? 라는 생각이 들었습니다. (1차 혼란)
그래서 AnyObject를 타고 들어가서 보니
typealias로 적혀있더라고요.
근데 좀 어색하지 않나요?
원래 typealias는 OOO = 타입으로 옆에 어떤 타입인지 적혀 있어야 합니다.
근데 AnyObject에는 아무것도 없는거에요... (2차 혼란)
이에 대해 검색해보니 이미 누가 스택오버플로우에 올렸더라고요.
알고보니 원래 코드에는 정상적으로 타입이 설정되어 있었습니다.
(Buildin 의 프로토콜..?인거 같은데 Builtin에 들어가 봐도 안 나와 있어서 정확히 알 수는 없네요. 프로토콜이라고 하니 프로토콜이겠죠?)
함께 알게된 점은 우리가 Xcode에서 보는 코드는 "전체 코드"가 아니라는 점입니다.
Xcode에서 보이는 코드들은 공개가 가능한 범위 내에서 제공하는 슈도 코드였습니다
그래서 위 코드처럼 문법에 맞지 않는 내용이 있어도 컴파일 에러가 발생하지 않고 돌아갈 수 있는 거에요.
마무리
얼렁뚱땅 마무리인데요 ㅎㅎ;
혹시나... 같은 것을 궁금해 하시는 분이 계실까 하여 공유하는 차원에서 포스팅합니다.
한글 정보는 없더라고요. ㅎㅎ
감사합니다!
참고
https://github.com/apple/swift/blob/main/stdlib/public/core/Policy.swift
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.