Type Casting
타입캐스팅은 인스턴스의 타입을 확인하거나 클래스의 같은 계층에 있는 superclass와 subclass를 다루기 위한 수단이다. 타입캐스팅은 is와 as를 사용한다.
Defining a Class Hierarchy for Type Casting
타입캐스팅은 같은 계층과 서브클래스의 타입을 확인 후 같은 계층의 다른 클래스의 캐스팅 할 수 있다. is연산자를 이용해 인스턴스의 타입을 확인할 수 있다.
Downcasting
특정 클래스 타입의 상수나 변수는 서브클래스를 참조할 수있다. 이는 as? as!연산자를 이용해 다운캐스트 할 수있다. 다운캐스팅이 실패 할 수 있기때문에 두가지 형태를 가지고 있다. 조건부인 as? 조건부로 값을 반환한다. 강제연산자는 as!이다. 조건부는 다운캐스팅이 성공할 것이라는 확신이 없을 떄 사용한다. 실패 시 nil값을 반환한다. 확신이 있을 때는 as! 를 사용하는 데 혹시 다운캐스팅에 실패를 하면 런타임 오류를 반환한다.
Type Casting for Any and AnyObject
스위프트는 두가지 특별한 타입이 존재한다.
Any는 함수타입을 포함해 모든 타입을 나타낸다.
AnyObject는 모든 타입의 인스턴스를 나타낸다.