[ Swift ] Any 와 AnyObject

이숭인·2021년 7월 22일
0

[ Swift ]

목록 보기
3/13

Any

  • Any는 함수 타입을 포함하여 모든 타입의 인스턴스를 나타낼 수 있다.

  • Value 타입(구조체, 열거형), Reference 타입(클래스, 클로저)이건 상관 없이 저장 가능


AnyObject

  • 모든 클래스가 암시적으로 준수하는 프로토콜 (타입이라기보다 프로토콜)

  • AnyObject는 모든 클래스 타입의 인스턴스를 나타낼 수 있다.

Int, Strint, Bool, Float, Double 등 모두 구조체로 구현되어있는데, 이런 자료형들은 class형이 아니기때문에 AnyObject 타입에 해당되지 않는다.


특징

  • Any는 모든 타입을 포함할 수 있는 범용 타입

  • AnyObject는 모든 클래스 타입을 포함할 수 있는 타입

  • 둘 모두 특징으로는 변수에 nil을 할당하지 못한다.


주의점

  • Any나 AnyObject는 런타임 시점에 타입이 결정되기 때문에 컴파일 시점에 해당 타입에 대해 알 수 없다

  • 때문에 다운 캐스팅을 하지 않는다면, 타입별로 가지고 있는 메서드 혹은 프로퍼티에 접근할 수 없다.

  • Any, AnyObject는 런타임시 타입이 결정되기 때문에 오류가 발생하게 된다면 런타임 에러가 발생하게 되어 오류 수정이 힘들어질 가능성이 존재하기 때문에 잘 사용해야한다!

profile
iOS Developer

0개의 댓글