본문 바로가기
etc/Swift

Any,AnyObject,nil

by IT learning 2021. 5. 5.
728x90

Any - Swift의 모든 타입을 지칭하는 키워드이다.

AnyObject - 모든 클래스 타입을 지칭하는 프로토콜이다.

nil - 없음을 의미하는 키워드이다. (NULL, Null 등과 같음)

 

Any

 var someAny: Any = 100
 someAny = "어떤 타입도 수용 가능합니다."
 someAny = 123.12
 
 // let someDouble: Double = someAny

 

Any는 모든 타입을 수용하는 키워드이다. 그러니까 어떤 타입을 가져다 할당해도 에러가 나지 않고 잘 할당 된다라는 소이다. 

하지만 주석 처리와 같이 Any 형이 아닌 다른 타입에 복사, 전달 하면 에러가 발생한다.

 

AnyObject

 class SomeClass {}
 
 var someAnyObject: AnyObject = someClass()
 
 //someAnyObject = 123.12

AnyObject는 모든 클래스 타입을 지칭하는 프로토콜이다.

위 프로토콜을 설정해놓으면, 선언된 모든 클래스를 사용하고 할당 받을 수 있다.

그러나 AnyObject로 만든 클래스에 클래스 인스턴스가 아닌 Double 타입을 넣으려고 하면 에러가 발생한다.

 

 

nil

 //someAny = nil
 //someAnyObject = nil

nil은 없음을 의미하는 키워드이다.

위에 생성된 변수와 클래스에 nil을 할당 할 수 없다.

nil은 방금 말했듯이 없음을 의미하기 때문에 어딘가에 추가 하고 그런게 아니다.

 

아마도 nil의 사용은 C++에서 NULL을 이용하여 배열을 초기화 하듯 그러한 곳에서 사용할 것으로 추측된다.

728x90

'etc > Swift' 카테고리의 다른 글

함수 기본  (0) 2021.05.13
컬렉션 타입  (0) 2021.05.11
Swift의 기본 데이터 타입  (0) 2021.05.04
상수와 변수(Swift)  (0) 2021.05.03
명명법 / 콘솔로그 / 문자열 보간법  (0) 2021.05.01

댓글

IT_learning's Commit