본문 바로가기
iOS/iOS

AnyObject

by 황민우 2022. 4. 11.

타입 캐스팅을 수행할 때 일반적으로 상속관계에 있는 클래스끼리만 캐스팅이 가능하지만,
Any와 AnyObect 타입사용할 경우 상속 관계에 있지 않아도 타입 캐스팅을 할 수 있습니다.


Any

- Any는 함수 타입을 포함하여 모든 타입의 인스턴스를 나타낼 수 있습니다.

 

 

실습

- Any 타입엔 Value타입(구조체, 열거형), Reference타입(클래스) 상관없이 모두 저장이 가능.

 

var TestArray: [Any] = []

TestArray.append(1)
TestArray.append(1.0)
TestArray.append("String")
TestArray.append(true)
TestArray.append({print("Hello World!")})

print(TestArray)
print(type(of:TestArray))

실행 결과


AnyObject

- AnyObject는 프로토콜입니다.

- 모든 클래스 타입의 인스턴스를 나타낼 수 있습니다.

- AnyObject 타입은 클래스 타입만 저장 가능.

 

 

 

실습 : 구조체 출력

var TestArray: [AnyObject] = []

TestArray.append(1)
TestArray.append(1.0)
TestArray.append("String")
TestArray.append(true)
TestArray.append({print("Hello World!")})

print(TestArray)
print(type(of:TestArray))

실행 결과 : 에러

 

 

 

실습2 :  클래스 출력

class Monster{
    
}

var TestArray: [AnyObject] = []

TestArray.append(Monster.init())
print(TestArray)
print(type(of:TestArray))

실행 결과


정리

- Any는 Value Type(구조체, 열거형)과 Reference Type(클래스) 상관없이 모든 타입의 인스턴스를 표현 가능합니다.

- AnyObject는 클래스, 클래스 타입 또는 클래스 전용 프로토콜의 인스턴스만 표현 가능합니다.


내용 출처

https://zeddios.tistory.com/213

 

Swift ) Any와 AnyObject의 차이

안녕하세요 :) Zedd입니다. 오늘은 Any와 AnyObject의 차이를 알아볼거에요!! 시작할게요!! Any와 AnyObject의 차이 The Swift Programming Language에서, Any와 AnyObject를 이렇게 말합니다. Swift는 특정하지..

zeddios.tistory.com

https://babbab2.tistory.com/128

 

Swift) Any와 AnyObject 알아보기

안녕하세요 :) 소들입니다! 오늘은 타입 캐스팅의 연장선으로 Any AnyObject 라는 "범용" 타입에 대해 공부해보려고 해요!! 모든 포스팅은 편의 말투로 합니다~!! 1. Any & Any Object 타입 캐스팅을 수행할

babbab2.tistory.com

 

댓글