参考自这篇文章
- C 语言中,用
0
作为不存在的原始值,而 NULL
作为指针
- Objective-C , 在 C 的表达不存在的基础上增加了 nil. nil是一个指向不存在的对象指针. 虽然它在语义上与 NULL 不同,但它们在技术上是相等的.
- Foundation 中定义了 NSNull,即一个类方法+null,它返回一个单独的NSNull对象.NSNull 与 nil 以及 NULL 不同,因为它是一个实际的对象,而不是一个零值.
- 刚被分配的 NSObject 的内容被设置为0。也就是说那个对象所有的指向其他对象的指针都从 nil.
- NSNull 在Foundation和其他框架中被广泛的使用,以解决如 NSArray 和NSDictionary 之类的集合不能有nil知的缺陷.比如:
NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionary];
mutableDictionary[@"someKey"] = [NSNull null]; // Sets value of NSNull singleton for `someKey`
NSLog(@"Keys: %@", [mutableDictionary allKeys]); // @[@"someKey"]