스위프트의 모든 데이터 타입을 사용할 수 있다는 뜻
변수 또는 상수의 데이터 타입이 Any로 지정되어 있다면 그 변수 또는 상수에는 어떤 종류의 데이터 타입이든지 상관없이 할당할 수 있다.
var someVar:Any = "Ned"
someVar = 50 //o
someVar = 100.1 //o
var someAny: Any = 100
someAny = "어떤 타입도 수용 가능합니다."
someAny = 123.12
let someDouble: Double = someAny // 컴파일 오류발생
Any보다는 조금 한정된 의미
클래스의 인스턴스만 할당할 수 있다.
Any와 AnyObject는 가능한 사용하지 않는 것이 좋다.
타입에 엄격한 Swift 언어의 특성상 Any 또는 AnyObject로 선언된 변수의 값을 가져다 쓰려면 매번 타입 확인 및 변환을 해줘야 하는 불편한 예기치 못한 오류의 위험 증가의 문제가 생긴다.
타입은 될 수 있는한 정확하게 명시하는 것이 좋다.
class SomeClass {}
var someAnyObject: AnyObject = SomeClass()
// AnyObject는 클래스의 인스턴스만 수용 가능하기 때문에 클래스의 인스턴스가 아니면 할당안됨
someAnyObject = 123.12 // 컴파일 오류발생
특정 타입이 아니라 '없음'을 나타내는 Swift의 키워드
변수 또는 상수에 값이 들어있지 않고 비어있음을 나타내는 데 사용한다.
nil이면 해당 변수 또는 상수에 접근했을 때 잘못된 메모리 접근으로 런타임 오류가 발생한다.
someAny = nil // 컴파일 오류발생
someAnyObject = nil // 컴파일 오류발생