前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OC中的nil、Nil、NULL、NSNull的区别

OC中的nil、Nil、NULL、NSNull的区别

作者头像
拉维
发布2019-11-12 16:56:08
2K0
发布2019-11-12 16:56:08
举报
文章被收录于专栏:iOS小生活iOS小生活

nil

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

代码语言:javascript
复制
NSObject *object = nil;
NSString *str    = nil;
NSURL    *url    = nil;
id       object  = nil;

Nil

Nil是指一个不存在的OC类对象指针,指的是OC类对象指针的空值,也就是OC类对象的空指针。不过由于大部分代码中不需要引用Class类型的变量,所以Nil并不常用。

代码语言:javascript
复制
Class Class1 = Nil;
Clsss Class2 = [NSURL class];

NULL

NULL指的是C语言中指针的空值,也就是说,对OC中的非对象指针赋空值

代码语言:javascript
复制
int    *intA     = NULL; 
char   *charC    = NULL;
struct structStr = NULL;

NSNull

NSNull是一个类对象,它是用来表示空值对象的类。NSNull有一个 + (NSNull *)null; 的单例方法。

我们知道,在集合(NSArray、NSDictionary、NSSet)中是不可以存储nil值的,但是如果我们有存储空值的需求的话,可以使用NSNull来代替nil

在NSArray中,使用NSNull来代替nil的案例:

代码语言:javascript
复制
//错误写法: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];

在NSDictionary中使用NSNull来代替nil的案例:

代码语言:javascript
复制
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
//错误写法,会出现编译错误。
[dict setObject:nil forKey:@"key"];
 
//正确写法
[dict setObject:[NSNull null] forKey:@"key"];

以上。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 iOS小生活 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档