nil
nil是指一个不存在的OC对象指针,OC对象指针的空值。
NSObject *object = nil;
Nil
Nil是指一个不存在的OC类指针,OC类指针的空值。因为大部分代码中不需要引用class变量,所以Nil并不常用。
Class class = Nil;
NULL
NULL是指C指针的空值。
int *point = NULL;
NSNull
NSNull是用于表示空值对象的类。
NSNull经常用于NSArray、NSDictionary等,因为它们不能存储nil值,所以使用NSNull来代替nil。
//错误写法:nil为数组结束标志,所以此时该数组的count=2,所以数组不能存储nil值。
NSArray *array = [[NSArray array]initWithObjects:@"1",@"2",nil,@"4", nil];
//正确写法:[NSNull null]通常可以作为数组的占位符。
NSArray *array = [[NSArray array]initWithObjects:@"1",@"2",[NSNull null],@"4", nil];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
//错误写法,会出现编译错误。
[dict setObject:nil forKey:@"key"];
//正确写法
[dict setObject:[NSNull null] forKey:@"key"];