NULL,nil,Nil,NSNull之间的区别

1.NULL

NULL是C语言中的空指针对象

char *c = NULL;

2.nil

nil 是Objective-C才会使用的,表示的OC对象的空字面量,对应的id类型的

NSString *someStr = nil;
NSNumber *someNum = nil;
NSArray *someArr = nil;
等....

3.Nil

Nil是Objective-C中类型的空字面量,对应的是Class类型

Class someCls = Nil;
Class arrCls = [NSArray class];
Class strCls = [NSString class];

4.NSNull

[NSNull null]表示一个对象实例,但是这个实例表示的是空。主要原因是在OC集合中,如果需要放置一个空对象实例,是不能用nil来做为存储的。所以此时,可以用[NSNull null]实例来操作。

**nil用来表示集合序列的结束。 **

[NSArray arrayWithObjects:@"one", @"two", nil];

正确的在集合加入空对象

NSMutableArray *arr = [NSMutableArray new];
NSNull *empty = [NSNull null];
[arr addObject:empty];

// [arr addObject:nil]; 这样是错误的

参考链接

你可能感兴趣的:(NULL,nil,Nil,NSNull之间的区别)