浅析nil、Nil、NULL和NSNull之间的区别与联系
2015-11-10 11:49
274 查看
时至今日终于可以坐下来写博客了,一直对nil、Nil、NULL和NSNull的理解很模糊,今天特来区分一下
首先说一下IOS中开发最常用的nil:
1、nil
nil表示一个空对象,用于给OC中的对象赋值。
执行下列语句:
NSLog(@"%@",nil);
printf("%p",nil);
输出结果是:
(null)
0x0
由此看出nil表示一个真实的对象,有地址,且值为null
注意这样一种情况:
2、Nil
其实nil和Nil没有严格的区别,凡是能用nil的地方,都可以使用Nil,但程序员往往喜欢用nil为一个实例对象赋值,而使用Nil为一个类对象赋值
3、NULL
由于OC是C语言的一个超集,自然有别于C,NULL表示一个空指针。为C语言所用。
4、NSNull
从名字就可以看出,NSNull是一个类,查看文档可以知道,该类继承于NSObject,且只用一个类方法 + (NSNull *)null;
在程序中,如果我们想使用一个实例对象表示这样一种情况:“我们需要有这样一个容器,但这个容器里什么也没有”这是我们就可以使用NSNull表示一个值为空的对象
使用方法如下:
首先说一下IOS中开发最常用的nil:
1、nil
nil表示一个空对象,用于给OC中的对象赋值。
执行下列语句:
NSLog(@"%@",nil);
printf("%p",nil);
输出结果是:
(null)
0x0
由此看出nil表示一个真实的对象,有地址,且值为null
注意这样一种情况:
2、Nil
其实nil和Nil没有严格的区别,凡是能用nil的地方,都可以使用Nil,但程序员往往喜欢用nil为一个实例对象赋值,而使用Nil为一个类对象赋值
3、NULL
由于OC是C语言的一个超集,自然有别于C,NULL表示一个空指针。为C语言所用。
4、NSNull
从名字就可以看出,NSNull是一个类,查看文档可以知道,该类继承于NSObject,且只用一个类方法 + (NSNull *)null;
在程序中,如果我们想使用一个实例对象表示这样一种情况:“我们需要有这样一个容器,但这个容器里什么也没有”这是我们就可以使用NSNull表示一个值为空的对象
使用方法如下:
相关文章推荐
- Android触摸屏失效后的操作方法
- 未来IT行业的掌控者
- xcode7模拟器显示过大
- 第六章家庭作业
- 日期加减一天
- JavaWeb学习篇——使用过滤器及装饰器设计模式解决全站乱码问题
- S2JH Hibernate Lazy抓取策略--could not initialize prox
- discuz 关于上传大文件失败的
- linux中忘记root密码
- iOS沙盒(sandbox)机制
- 最强日期正则表达式
- WindowsPhone8.1和Win10常用的API
- python学习问题之-编码
- 【问题】报错[CRITICAL] Rendering SLS 'base:minions.install' failed: Jinja variable 'list' object has no element 0
- 在centos安装bugzilla4.4.10、nginx,安装简体中文包
- 标准Web系统的架构分层
- 负数的带符号和不带符号的右移运算
- IE6 中 window.open() 函数的超级大坑
- 基于gulp+webpack的"约定大于配置"的构建方案探讨
- Sitemesh 3 的使用及配置