1、nil 是对 OC 里面对象赋空值
例如:NSString *name = [[NSString alloc] initWithFormat:@”test”];
如果是 MRC 管理内存的方式,遵照内存管理原则,在不需要使用 name 的时候需要进行:
[name release];
但是此时,仅仅对 name 进行了 release,没有设置 name 的指针为空
如果程序的其他地方再次使用 name,可能造成崩溃问题。
所以更加稳妥的做法是:在 release 之后对 name 指针进行置空
name = nil;可以有效的避免release 之后再次使用的野指针问题
2、NULL 是对非对象指针置空,例如 C 语言指针
char *name = malloc(40);
free(name);
name = NULL;
在C 语言中,对一个指针进行 free 之后,再次进行指针置空。
3、Nil 用于给一个类对象置空
Class aClassObject = Nil;
4、NSNull是 OC 里面的一个类,可以定义一个空的对象 例如一个定义了一个可变数组,nil、Nil、NULL 都不能加入到数组 但是,NSNull 的对象可以加入到数组,表示这个数组里面是空的
NSMutableArray *array = [NSMutableArray array];
NSNull *object1 = [[NSNull alloc] init];
[array addObject:object1];