etc/Swift
Any,AnyObject,nil
IT learning
2021. 5. 5. 18:44
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