【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:集合中表示空值的对象。

相关推荐
于慨9 分钟前
mac安装flutter
javascript·flutter·macos
北京自在科技2 小时前
谷歌 Find Hub 网页端全面升级:电脑可直接管理追踪器与耳机
android·ios·安卓·findmy
for_ever_love__2 小时前
UI 学习 Appearance 外观管理
学习·ui·ios·objective-c
懋学的前端攻城狮4 小时前
自定义导航栏的深度实践:从视觉需求到架构设计
ios
2501_916007475 小时前
从零开始学习iOS开发:Xcode环境配置与项目创建完整指南
ide·vscode·学习·ios·个人开发·xcode·敏捷流程
码农阿豪5 小时前
中兴 F50 刷 UFI-TOOLS + cpolar:随身 WiFi 也能远程管理了
人工智能·windows·macos
云空5 小时前
《OpenClaw(macOS版)部署与使用中的安全问题及解决方案》
安全·macos·策略模式
Digitally5 小时前
如何在Windows、Mac和移动设备上永久删除Word文档
windows·macos·word
平淡风云6 小时前
Copying shared cache symbols from xxx iPhone
ios·iphone·xcode
Chengbei116 小时前
Fortify_SCA_26.1版下载(OpenText SAST(Fortify SCA)26.1 windows/Linux/Mac)全版本下载
运维·安全·web安全·macos·网络安全·系统安全·代码审计