iOS - nil,Nil,NULL,NSNULL 区别


参考自这篇文章

  • 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"]

你可能感兴趣的:(iOS - nil,Nil,NULL,NSNULL 区别)