iOS 空值 nil 、Nil、 NULL、 NSNull、 kCFNull

nil

修饰实例对象的空指针:

    NSString * str = nil;
    NSObject * obj = nil;

Nil

指向类的空指针

   Class cls = Nil;

NULL

通用指针(泛型指针),定义其他类型(基本类型,C类型)的空指针

  char *p=NULL;

NSNull

数组中元素的占位符,数据中的元素不能为nil(可以为空,也就是NSNull),

原因:nil是数组的结束标志,如果nil,就会变成

NSArray *array=[NSArray arrayWithObjects:
              [[NSObject alloc]init],
              nil,
              [[NSObject alloc]init],
              [[NSObject  alloc]init],
              nil
];

那么数组倒数第二个位置就会结束,打印[array count]的就会显示1而不是5,即类似于在C中,字符串碰到 '\0' 就会结束一样。OC中数组遇见nil即标志着数组的结束。所以要用到NSNull占位符。

kCFNull

NSNull的单例。

NSNull *null1 = (id)kCFNull;
NSNull *null2 = [NSNull null];

使用:判定入参是否为空,例如在YYModel中:

 if (!dictionary || dictionary == (id)kCFNull) return nil;

这样写,避免了在嵌套类型中,比如说数组中,元素都是字典类型,字典类型为空时的判定。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。