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

相关推荐
Digitally1 小时前
iPhone 卡在恢复模式:如何修复(分步指南)
ios·iphone
LAM LAB2 小时前
【Mac】修改改 command 和 alt 键位映射
macos
vx-bot5556662 小时前
企业微信ipad协议的协议状态机与生命周期管理
ios·企业微信·ipad
ITKEY_2 小时前
macOS通过命令行启动iOS模拟器
macos·ios
00后程序员张2 小时前
iPhone 无需越狱文件管理 使用Keymob查看导出文件
android·ios·小程序·https·uni-app·iphone·webview
OneCrab2 小时前
Iphone漏洞利用工具包 Coruna DarkSword
ios·cocoa·iphone
2501_915106322 小时前
不依赖 Mac 也能做 iOS 开发?跨设备开发流程
ide·vscode·macos·ios·个人开发·swift·敏捷流程
2501_916008892 小时前
Unity3D iOS 应用防篡改实战 资源校验、 IPA 二进制保护
android·ios·小程序·https·uni-app·iphone·webview
2501_915909063 小时前
MachObfuscator全面解析:Apple平台Mach-O应用程序混淆技术指南
macos·ios·小程序·uni-app·objective-c·cocoa·iphone
RickeyBoy14 小时前
解决 Swift Testing 中 DI 容器的竞态条件
ios