iOS nil、Nil、NULL和[NSNull null]

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);
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。