[TIL] 타입캐스팅

Eden·2025년 6월 2일

Swift에서 타입을 검사하거나 다른 타입으로 변환할 수 있게 해주는 기능입니다.
주로 클래스 상속 구조에서 부모 ↔️ 자식 클래스 간에 사용합니다.


주요 연산자

연산자설명
is타입 확인 (Bool 반환)
as?옵셔널 다운캐스팅 (실패 시 nil)
as!강제 다운캐스팅 (실패 시 런타임 오류 발생)

예제 코드

class Animal {}
class Dog: Animal {
    func bark() { print("🐶 멍멍!") }
}

let pet: Animal = Dog()

// ✅ 타입 확인
if pet is Dog {
    print("Dog 타입이에요!")  // true
}

// ✅ 안전한 다운캐스팅
if let dog = pet as? Dog {
    dog.bark()  // "멍멍!"
}

// ⚠️ 강제 다운캐스팅 (실패하면 crash!)
let dog = pet as! Dog
dog.bark()

업캐스팅 vs 다운캐스팅

용어설명예시
업캐스팅자식 → 부모 (자동)let a: Animal = Dog()
다운캐스팅부모 → 자식 (수동)a as? Dog, a as! Dog

Any, AnyObject 캐스팅

let value: Any = "Hello"

if let string = value as? String {
    print(string)  // "Hello"
}

Any: 모든 타입
AnyObject: 모든 클래스 타입


✅ 요약

is: 타입 확인용
as?: 안전한 변환 (옵셔널)
as!: 강제 변환 (위험 ❗️)
클래스 상속 구조나 Any 타입 다룰 때 필수 도구

profile
iOS Dev

0개의 댓글