【iOS】nil、Nil、NULL、NSNull的区别

nil

nil是指一个不存在的OC实例对象的指针,也就是OC实例对象的空指针

bash 复制代码
    NSObject *object = nil;
    NSString *str    = nil;
    NSURL    *url    = nil;
    id  object1  = nil;

Nil

是指OC类对象的空指针

bash 复制代码
    Class Class1 = Nil;
    Class Class2 = [NSURL class];

NULL

C语言指针类型的空值,也就是给除OC对象之外的指针赋空值

bash 复制代码
int    *intA     = NULL; 
char   *charC    = NULL;

NSNull

集合中表示空值的对象

我们知道数组与字典中是不能存储nil的,因此如果有空值需求的话我们要用NSNull来替代nil

bash 复制代码
//错误写法: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];
bash 复制代码
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
//错误写法,会出现编译错误。
[dict setObject:nil forKey:@"key"];
 
//正确写法
[dict setObject:[NSNull null] forKey:@"key"];

总结

nil:对象指针的空值。
Nil:类指针的空值。
NULL:C指针的空值。
NSNull:集合中表示空值的对象。

相关推荐
OKXLIN1 小时前
XCode集成第三方framework步骤
ide·macos·framework·xcode
鸿蒙布道师5 小时前
鸿蒙NEXT开发资源工具类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
season_zhu8 小时前
iOS开发:关于路由
ios·架构·swift
yinshuilan8 小时前
Mac提示无法打开应用程序DBeaver
macos
鸿蒙布道师11 小时前
鸿蒙NEXT开发设备相关工具类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
熊猫鹏-梓潼12 小时前
Swift Programming All in One苹果程序开发自学之路
开发语言·ios·swift
Black_Rock_br17 小时前
Mac监控新风尚:酷炫界面,性能监控更直观!
运维·macos
humiaor20 小时前
Xcode为不同环境配置不同的环境变量
ide·macos·xcode·xcode多环境·user-defined
njsgcs21 小时前
用swift playground写个ios应用和大模型或者网站交互
ios·swift
冯浩(grow up)1 天前
macOS可视化桌面配置docker加速器
macos·docker·容器