Swift

[Swift] Any와 AnyObject

양밀루 2025. 6. 12. 20:35

오랜만에 스토리보드로 화면을 그리다가 눈에 밟히는 Any..!

프로토콜에서 사용했던 AnyObject와 무슨 관련이 있는건가 궁금했다 

 

타입캐스팅 공식문서에서 설명하고 있는 Any와 AnyObject

 

그리고 예상했겠지만 Any, AnyObject 둘 다 프로토콜

 

✅ 예제

// Any - 모든 타입 수용
let anyInt: Any = 42              // Int (값 타입)
let anyString: Any = "Hello"      // String (값 타입)
let anyButton: Any = UIButton()   // UIButton (참조 타입)

// AnyObject - 클래스만 수용
let objButton: AnyObject = UIButton()  // 클래스
// let objInt: AnyObject = 42          // ❌ 값 타입 불가

 

 

✅ 활용

@IBAction func buttonTapped(_ sender: Any) {
    // 다양한 UI 컨트롤이 sender가 될 수 있어서 Any 사용
    if let button = sender as? UIButton {
        print("버튼 클릭")
    }
}

 

protocol DelegateProtocol: AnyObject {  // 클래스만 채택 가능
    func didFinish()
}

class ViewController {
    weak var delegate: DelegateProtocol?  // weak는 클래스 타입에만 사용 가능
}

 

 

 

'Swift' 카테고리의 다른 글

[Swift] Singleton에서의 private init()  (0) 2025.06.20
[Swift] Result 타입  (1) 2025.06.17
[Swift] 캡처리스트와 순환참조  (1) 2025.06.05
[Swift] 고차함수 더 이상 헷갈리지 않기  (0) 2025.06.04
[WWDC] ARC in Swift  (0) 2025.05.30