공부하며 적는 글입니다. 정확하지 않을 수 있습니다.
사실 두 차이가 뭔지 몰라서 시작했다.
이 둘의 정확한 차이가 뭐길래 이렇게 두개로 나눠놓은건지 알아보자.
Any는 이름 그대로 모든 타입을 저장하는 키워드이다.
Swift는 다들 알다시피 타입에 매우 엄격한 타입이다.
같은 타입이 아니면 에러를 내뿜기도 한다.
근데, 이런 엄격함을 제쳐두고 모든 타입을 저장할 수 있게 해주는 것이 바로 Any이다.
var things: [Any] = []
things.append(1)
things.append(1.0)
things.append("IBY")
things.append(false)
things.append(Person.init())
things.append({ print("Hello World") })
이렇게 Any 타입에는 Value 타입이건, Reference타입이건 상관없이 모두 저장이 가능하다.
AnyObject는 모든 클래스 타입을 저장하는 키워드이다.
타입이 AnyObject로 선언될 경우, 클래스 타입만 저장할 수 있다.
이렇게 클래스 타입만 저장할 수 있게 되어있다.
Any는 모든 타입을 저장할 수 있는 타입이고, AnyObject는 클래스 타입만 저장할 수 있는 타입이다.