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

相关推荐
周小董15 小时前
[1379]mac安装nvm
macos
茶底世界之下15 小时前
雨夜街角裁成方图,人物与冷暖光还能共存吗?
ios
youdexiang17 小时前
IOS录音APP拍照记录能和音频同步吗
ios·音视频
bossjuemfc18 小时前
不记得文件名时,Mac 上的搜索还能怎么做?
macos
2501_9159090618 小时前
Windows 打开 Xcode 工程,编译调试 Xcode 项目并和 Mac 同事协作
ide·windows·vscode·macos·ios·个人开发·xcode
互联网江湖18 小时前
iPhone Duo跌倒,国产折叠屏手机吃饱?
ios·智能手机·iphone
请为小H留灯1 天前
Mac 常用操作与维护技巧
macos·电脑·清理电脑·常用技巧
zwd20051 天前
词频是什么?生词滑块 zipf 3.0 到 5.0 怎么调:同一屏从 0 个生词到 11 个
ios·iphone·效率工具·英语学习·词频·屏幕翻译
茶底世界之下1 天前
灯暖窗冷,色温要不要继续降?用 Awaking 看混合光的取舍
ios
hantmac2 天前
不记得文件名时,Mac 上的搜索还能怎么做?
人工智能·macos