[Swift] 특이한 데이터 타입 - Any, AnyObject. 그리고 키워드 nil

Minjeong Park·2021년 10월 13일
0

Swift 문법

목록 보기
5/9

Swift에서 특이하게 가지고 있는 데이터 타입이 있다. 바로 Any와 AnyObject이다.
Any에는 모든 데이터 타입의 값이, AnyObject에는 모든 클래스의 인스턴스를 대입할 수 있다.
하지만 직접 이 변수를 사용하기 위해선 사용하려는 타입으로 형 변환을 꼭 해줘야 한다.
Swift는 타입에 엄격하고 안전성을 추구하기 때문에 Any, AnyObject로 선언된 변수의 값을 가져다 쓰려면
매번 타입 확인 및 변환을 해줘야 하며, 이로 인해 예기치 못한 오류가 생길 수 있기 때문에,
해당 변수에 무슨 값이 올지 정해졌다면 타입은 명시하는 것이 좋다.

Any

Any는 다양한 데이터 타입의 값을 수용할 수 있다.
하지만 Any 데이터 형을 대입하려면 반드시 형 변환이 필요하다.

var someAny : Any = 0
someAny = "나는 String도 된다"
someAny = 0.1
someAny = "😉"

var someFloat : Float = someAny // error

AnyObject

AnyObject는 Any보단 좁은 의미로 클래스의 인스턴스를 모두 대입할 수 있다.
클래스 인스턴스의 값만 대입할 수 있기 때문에 일반 데이터형을 대입하면 에러가 발생한다.
일반 데이터형을 쓰고 싶을 땐 꼭 Any를 쓸 것!

nil

nil은 특정 타입이 아니라 없음을 의미하는 스위프트 키워드이다.
NULL, Null, null 등과 유사한 표현인데, 특정 타입에 대한 값의 부재를 의미한다.

Any와 AnyObject에는 nil 대입이 불가능하다.
Any와 AnyObject에는 각각 데이터 타입과 클래스 인스턴스만 받기 때문인데,
nil은 데이터 타입이 아닌 그냥 없음을 뜻하는 키워드이기 때문이다.

nil은 optional 변수에만 대입이 가능한 키워드이다.

var anyAny : Any
var anyAnyObject : AnyObject

anyAny = nil //error
anyAnyObject = nil //error

profile
아자아잣

0개의 댓글