nil
nil是指一个不存在的OC实例对象指针,指的是OC实例对象指针的空值,也就是OC实例对象的空指针。
NSObject *object = nil;
NSString *str = nil;
NSURL *url = nil;
id object = nil;
Nil
Nil是指一个不存在的OC类对象指针,指的是OC类对象指针的空值,也就是OC类对象的空指针。不过由于大部分代码中不需要引用Class类型的变量,所以Nil并不常用。
Class Class1 = Nil;
Clsss Class2 = [NSURL class];
NULL
NULL指的是C语言中指针的空值,也就是说,对OC中的非对象指针赋空值。
int *intA = NULL;
char *charC = NULL;
struct structStr = NULL;
NSNull
NSNull是一个类对象,它是用来表示空值对象的类。NSNull有一个 + (NSNull *)null; 的单例方法。
我们知道,在集合(NSArray、NSDictionary、NSSet)中是不可以存储nil值的,但是如果我们有存储空值的需求的话,可以使用NSNull来代替nil。
在NSArray中,使用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];
在NSDictionary中使用NSNull来代替nil的案例:
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
//错误写法,会出现编译错误。
[dict setObject:nil forKey:@"key"];
//正确写法
[dict setObject:[NSNull null] forKey:@"key"];
以上。