인스턴스의 타입을 확인 하거나, 해당 인스턴스를 슈퍼 클래스나 하위 클래스로 취급하는 방법
Swift에서 타입 캐스팅은 is 나 as 연산자로 구현하고, 타입 캐스팅을 사용하여 타입이 프로토콜에 적합한지 여부도 확인할 수 있음
타입을 체크하는 연산자
런타임 시점에 실제 체크가 이루어짐
표현식이 Type과 동일하거나, 표현식이 Type의 서브 클래스인 경우 => true
이 외의 경우 => falselet string: String = "string" string is String // => true string is Int // => false
또한 Type의 서브 클래스인 경우에도 true를 반환
class Man { } class Me: Man { } let me: Me = .init() me is Me // => true me is Man // => true
표현식이 변환할 Type과 호환된다면, 변환될 Type으로 캐스팅된 인스턴스를 리턴한다.
상속관계인 업캐스팅(Up Casting)과 다운캐스팅(Down Casting)에서 사용한다.
Any와 AnyObject 타입을 사용할 경우, 상속관계가 아니어도 예외적으로 사용 가능하다.
as를 사용하여 부모 클래스의 인스턴스로 사용할 수 있도록 컴파일러에게 타입정보를 전환해준다.
업 캐스팅은 항상 성공한다
as?(조건부), as!(강제)를 사용하여 자식 클래스의 인스턴스로
사용할 수 있도록 컴파일러에게 타입 정보를 전환해준다.
런타임 시점에 다운 캐스팅을 하며, 실패할 시에 nil을 리턴
런타임 시점에 다운 캐스팅을 하며, 실패할 경우 에러 발생