Swift에서 Any는 모든 데이터 타입(클래스, 구조체, 옵셔널 등등)을 표현할 수 있는 최상위 개념의 타입입니다.
다른 타입에 비해 자료형의 크기가 크다는 단점을 가지고 있습니다. (32바이트)
Any 타입으로 저장된 데이터는 정확하게 어떤 메모리 구조로 이루어졌는지 알 수 없으므로 정확한 데이터타입(Int, String 등 명확한 데이터 타입)으로 타입 캐스팅(as)해서 사용하는 것이 좋습니다.
✅ 배열에 다양한 데이터 타입 할당하기
var num: Int? = 10 class A{ var a: Int = 1 } var anyArray: [Any] = [1, "hello", 3.5, A(), num] // [Int, String, Double, A, Optional<Int>]
✅ Any타입의 타입캐스팅
var num: Int? = 10 class A{ var a: Int = 1 } var anyArray: [Any] = [1, "hello", 3.5, A(), num] // anyArray[1].count // Any 타입은 프로토콜, 함수 등의 기능을 사용할 수 없습니다. (anyArray[1] as? String)!.count //Any 타입을 String 타입으로 타입 캐스팅하여 사용해야 한다.
✅ 배열에 다양한 클래스 타입 할당하기
class A{ } class B{ } class C{ } var ABC: [AnyObject] = [A(), B(), C()] //AnyObject를 사용하면 각기 다른 타입의 인스턴스를 하나의 배열로 할당할 수 있습니다.
참고자료: 앨런 Swift문법 마스터 스쿨