오랜만에 스토리보드로 화면을 그리다가 눈에 밟히는 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 |