[swift] 타입 캐스팅을 이용한 프로토콜 검사

Swift에서는 타입 캐스팅을 사용하여 인스턴스의 타입을 확인하거나, 부모 클래스를 자식 클래스로 캐스팅할 수 있습니다. 프로토콜을 준수하는지 여부도 타입 캐스팅을 통해 확인할 수 있습니다.

프로토콜 타입 캐스팅

프로토콜 타입 캐스팅은 인스턴스가 특정 프로토콜을 준수하는지 여부를 확인하는 데 사용됩니다. 이때 is 키워드를 사용하여 어떤 타입에 대한 프로토콜 준수 여부를 검사할 수 있습니다.

protocol MyProtocol {
    func myMethod()
}

class MyClass: MyProtocol {
    func myMethod() {
        // implementation
    }
}

let instance = MyClass()
if instance is MyProtocol {
    print("인스턴스가 MyProtocol을 준수합니다.")
} else {
    print("인스턴스가 MyProtocol을 준수하지 않습니다.")
}

위 예제에서 instance is MyProtocolinstanceMyProtocol을 준수하는지를 확인하고, 그에 따라 적절한 출력을 합니다.

프로토콜 타입 다운캐스팅

프로토콜 타입 캐스팅을 통해 부모 클래스를 자식 클래스로 다운캐스팅할 수도 있습니다. 이때 as?as! 키워드를 사용하여 원하는 프로토콜에 해당하는 인스턴스로 캐스팅할 수 있습니다.

protocol MyProtocol {
    func myMethod()
}

class MyClass: MyProtocol {
    func myMethod() {
        // implementation
    }
}

let instance: MyProtocol = MyClass()
if let myInstance = instance as? MyClass {
    print("다운캐스팅 성공")
    myInstance.myMethod()
} else {
    print("다운캐스팅 실패")
}

위 예제에서 instance as? MyClassinstanceMyClass로 다운캐스팅하는데 성공하면 myInstance에 할당하고, 그에 따라 적절한 출력을 합니다.

타입 캐스팅을 통해 프로토콜 검사와 캐스팅을 유연하게 활용하여 Swift 언어의 강력한 특징을 활용할 수 있습니다.

참고: The Swift Programming Language - Type Casting