[swift] AnyObject 타입 캐스팅의 활용 예시

이번 포스트에서는 AnyObject 타입 캐스팅이 어떤 상황에서 유용하게 활용될 수 있는지에 대해 알아보겠습니다.

AnyObject 타입

AnyObject는 모든 클래스의 인스턴스를 나타내는 Swift 프로토콜 타입입니다. 이는 클래스 타입의 인스턴스라면 어떠한 클래스도 담을 수 있는 타입이라는 의미입니다.

AnyObject 타입 캐스팅

아래는 AnyObject 타입 캐스팅이 어떻게 활용되는지를 보여주는 간단한 예시입니다.

class Animal {
    func makeSound() {
        print("Animal makes a sound")
    }
}

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

class Cat: Animal {
    override func makeSound() {
        print("Meow")
    }
}

let pets: [AnyObject] = [Dog(), Cat()]

for pet in pets {
    if let animal = pet as? Animal {
        animal.makeSound()
    }
}

위 예시에서는, AnyObject를 사용하여 DogCat 클래스의 인스턴스를 담는 배열을 선언하고 있습니다. 그리고 나서 배열을 순회하면서 AnyObject 타입을 Animal 타입으로 다운캐스팅하여 해당 메서드를 호출하는 것을 볼 수 있습니다.

결론

AnyObject 타입 캐스팅은 런타임에 인스턴스의 타입을 동적으로 확인하고 적절한 메서드나 프로퍼티를 호출하는데 유용합니다.

더 많은 정보를 원하시면 Swift 공식 문서의 Type Casting 부분을 참조해주세요.