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;
这样写,避免了在嵌套类型中,比如说数组中,元素都是字典类型,字典类型为空时的判定。