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
'iOS > iOS 기본기' 카테고리의 다른 글
[iOS] Helper object / Delegate 동작 방식 / Protocol (0) | 2019.11.24 |
---|---|
[iOS] AppKit Framework - UIControl, target-action (0) | 2019.11.24 |
[iOS] @property / @sythesize / @dynamic (0) | 2019.11.24 |
[iOS] 메모리 관리 - ARC / Strong reference cycle / Zero weak reference (0) | 2019.11.24 |
[iOS] NSObject / isa / Selector (0) | 2019.11.24 |