[swift] 타입 캐스팅을 활용한 동적 메소드 호출

안녕하세요! 오늘은 Swift에서 타입 캐스팅을 활용하여 동적으로 메소드를 호출하는 방법에 대해 알아보겠습니다.

타입 캐스팅(Type Casting)

타입 캐스팅은 객체의 타입을 확인하거나 해당 타입으로 변환하는 방법을 말합니다. Swift에서는 is, as?, as! 연산자를 사용하여 타입 캐스팅을 수행할 수 있습니다.

동적 메소드 호출하기

타입 캐스팅을 활용하여 객체의 실제 타입을 확인하고 해당 타입의 메소드를 동적으로 호출할 수 있습니다. 예를 들어, 부모 클래스로 선언된 변수에 실제로는 자식 클래스의 인스턴스가 할당되어 있다고 가정해 보겠습니다. 이때 타입 캐스팅을 통해 실제 타입을 확인하고 해당 타입의 메소드를 호출할 수 있습니다.

다음은 동적으로 메소드를 호출하는 예제 코드입니다.

class Animal {
    func makeSound() {
        print("Some generic sound")
    }
}

class Dog: Animal {
    override func makeSound() {
        print("Bark!")
    }
}

let someAnimal: Animal = Dog()
if let dog = someAnimal as? Dog {
    dog.makeSound() // "Bark!" 출력
}

위 예제에서 someAnimal 변수는 Animal 타입으로 선언되었지만 실제로는 Dog 클래스의 인스턴스가 할당되어 있습니다. 이때 as? 연산자를 사용하여 Dog 타입으로 타입 캐스팅을 수행하고, 해당 타입의 makeSound 메소드를 동적으로 호출하고 있습니다.

결론

타입 캐스팅을 활용하면 객체의 실제 타입을 확인하고 해당 타입의 메소드를 동적으로 호출할 수 있습니다. 이를 통해 유연하고 다양한 상황에 대응할 수 있는 코드를 작성할 수 있습니다.

기술 블로그를 읽어주셔서 감사합니다!

References