[swift] 타입 캐스팅을 이용한 객체 타입 지정

타입 캐스팅은 Swift에서 객체의 타입을 확인하거나, 다른 타입으로 변환하는 것을 말합니다. 이 기능을 사용하여 객체의 타입을 확인하고 해당 타입으로 객체를 다루는 방법에 대해 알아보겠습니다.

1. 타입 확인 (Type Check)

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

class Dog: Animal {
    func bark() {
        print("Woof woof")
    }
}

let someAnimal = Dog()
if someAnimal is Dog {
    print("It's a dog!")
}

위의 예제에서 someAnimalDog 타입인지 확인하기 위해 is 키워드를 사용했습니다.

2. 다운캐스팅 (Downcasting)

let someAnotherAnimal = Animal()
// 다운캐스팅을 통해 객체의 실제 타입에 맞게 변환
if let dog = someAnotherAnimal as? Dog {
    dog.bark()
} else {
    print("This animal is not a dog")
}

as? 키워드를 사용하여 someAnotherAnimalDog로 다운캐스팅하고, 성공 여부에 따라 조건문을 통해 처리할 수 있습니다.

3. 강제 다운캐스팅 (Forced Downcasting)

let anotherAnimal = Animal()
// 강제 다운캐스팅을 통해 객체의 실제 타입에 맞게 변환
let anotherDog = anotherAnimal as! Dog
anotherDog.bark()

as! 키워드를 사용하여 객체를 강제로 다운캐스팅할 수 있습니다. 하지만 만약 타입이 맞지 않는다면 런타임 에러가 발생할 수 있으므로 주의가 필요합니다.

타입 캐스팅을 이용하면 객체의 타입을 동적으로 판별하고 변환할 수 있어, Swift에서 유연한 객체 다루기를 가능하게 합니다.

참고 자료: The Swift Programming Language - Type Casting