[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를 사용하여 Dog와 Cat 클래스의 인스턴스를 담는 배열을 선언하고 있습니다. 그리고 나서 배열을 순회하면서 AnyObject 타입을 Animal 타입으로 다운캐스팅하여 해당 메서드를 호출하는 것을 볼 수 있습니다.
결론
AnyObject 타입 캐스팅은 런타임에 인스턴스의 타입을 동적으로 확인하고 적절한 메서드나 프로퍼티를 호출하는데 유용합니다.
더 많은 정보를 원하시면 Swift 공식 문서의 Type Casting 부분을 참조해주세요.