iOS面试收集iOS Foundations

OC里面的空 nil,Nil,null,NSNull

2016-03-28  本文已影响144人  酷酷的哀殿

nil 和 Nil 都 Objective-C Runtime 里面的常量,它们的值都是 __DARWIN_NULL

在实际使用中,nil 用于指向空实例, Nil 用于指向空类

NULL 是 C 中空指针。它被定义为地址为零的常量指针。
# define NULL ((void*)0)

NSNull 类定义了一个用于代替无法使用空值的地方(比如NSArray,NSDictionary)。

NSNull *nullValue = [NSNull null];
NSArray *arrayWithNull = @[nullValue];
NSLog(@"arrayWithNull: %@", arrayWithNull);
// Output: "arrayWithNull: (<null>)"

需要注意的是,NSNull 实例,无法和No、false 等价。

下面是检测 NSNull的方法。

id aValue = [arrayWithNull objectAtIndex:0];

if (aValue == nil) {

  NSLog(@"equals nil");

}

else if (aValue == [NSNull null]) {

  NSLog(@"equals NSNull instance");

  if ([aValue isEqual:nil]) {

    NSLog(@"isEqual:nil");
    
  }
  
}

// Output: "equals NSNull instance"

// Output: "arrayWithNull: (<null>)"

参考文章

上一篇 下一篇

猜你喜欢

热点阅读