nil / Nil / NULL / NSNULL 대한 차이점과, Objective-C에서의 nil과 Swift에서의 nil에 대해 알아보자

 

 

1. nil / NULL / Nil

사용할 수 없는 번지를 가리키는 포인터(pointer), 즉 아무 객체도 가리키지 않는다

 

nil

Objective-c object의 부재를 나타내는 null Instance pointer

NSString * strObject = nil;

 

Nil

- Objective-c class의 부재를 나타낼 때는 null class pointer
- Objective-c class: 자신이 속한 클래스의 정보를 가진 구조체.

Class myClass = Nil

 

NULL

- traditional C null pointer

- c-pointer의 부재(주소가 0) 및 C나 C++의 변수 및 객체에 사용

int *intPtr = NULL;

 

 

2. NSNull

- NSObject를 상속받는 객체

- collection item을 null로 설정할 필요가 있을때 사용

myArray addObject:[NSNull null]];
 
if ([myArray objectAtIndex:0] == [NSNull null])

 

 

 

3. Objective-c에서의 nil 과 Swift에서의 nil 차이점

차이점

Objective-C에서의 nil은 존재하지 않는 객체에 대한 포인터(pointer)이고

Swift에서의 nil는 포인터가 아니다 => 단지, 특정 타입에 대한 값의 부재를 나타내는 것

 

즉, Swift에서의 nil은 객체가 아니더라도 어떤 타입이든 Optional로 nil을 가질 수 있다.
(Objective-C에서는 객체만 nil을 가질 수 있고, primitive type은 가질 수 없음 ex. int, ...)

 

 

 

 

 

 

 

 

Ref.

https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html

https://inboony.tistory.com/10

 

 

+ Recent posts