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

相关推荐
巴博尔2 小时前
UNIAPP中NVUE页面 动画
android·前端·javascript·ios·uni-app
ServBay3 小时前
2026 Mac 本地大模型部署深度解析与混合架构指南
后端·macos·aigc
2601_955767423 小时前
圆偏振光膜与AR抗反射膜原理评测:scinique双护技术如何实现“一柔一清”?
ios·ar·iphone·圆偏振光·磁控溅射
人月神话-Lee4 小时前
【图像处理】图像导出与工业级压缩策略——从像素到文件的最后一公里
图像处理·人工智能·ios·ai编程·swift
UXbot10 小时前
无需设计经验也能做原型:AI辅助工具功能评测
前端·人工智能·低代码·ui·ios·交互
ch_ziyuan12 小时前
2026新优化神马TV8.5影视点播系统保姆级搭建教程:三后台配置+反编译修改
android·ios·php
2601_9557674212 小时前
观复盾 iPhone 17 Pro 护景贴深度评测:参数解析与实测避坑
人工智能·ios·ar·iphone·圆偏振光·磁控溅射
一拳一个娘娘腔14 小时前
【SRC漏洞挖掘系列】第11期:移动端安全(Android/iOS)—— APP 里的“猫腻”大起底
android·安全·ios
搬砖的小码农_Sky14 小时前
macOS Sequoia上如何安装Python开发环境?
开发语言·python·macos
码农阿强15 小时前
OpenAI Codex 全平台详细安装与配置教程(Windows/Mac/Linux)
linux·windows·macos·ai