NULL 是宏,是对于 C 语言指针而使用的,表示空指针
nil 是宏,是对于 Objective-C 中的对象而使用的,表示对象为空
Nil 是宏,是对于 Objective-C 中的类而使用的,表示类指向空
NSNull 是类类型,是用于表示空的占位对象,与 JS 或者服务端的 null 类似的含意
nil. 等于 Nil nil就是把一个对象的指针置为空,只是切断了指针与内存中对象的联系,它对内存的释放没有什么作用
先release后设置nil
NSNull 有这个对象。但是内存里面都是0000000
NSMutableArray *mArr1 = [NSMutableArray array];
id strr;
if (strr == nil) {
strr = [NSNull null];
}
[mArr1 addObject:strr];
不会崩溃
NSNull存在的意义 一般用于表示集合中值为空的对象
NSNull是个单例,只有一个方法null,也用来表示空值。但它出现在一些nil无法胜任的场景来替代nil来表示空值。比如NSArray和NSDictionary中nil代表数组或字典的末尾(即使nil不出现在末尾,也会将其切断,nil后面的值会丢失),此时只能用NSNull对象来表示空值:
NSNull *nullValue = [NSNull null];
NSArray *arrayWithNull = @[nullValue];
NSLog(@" arrayWithNull: %@", arrayWithNull);
NSString *s = @"";
if ([s isEqual:[NSNull null]]) {
NSLog(@" == %@", ss);
}