码迷,mamicode.com
首页 > 其他好文 > 详细

nil、Nil、NULL和NSNull的理解

时间:2016-05-03 15:49:47      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:

 
 
一、nil
 
我们给对象赋值时一般会使用object = nil,表示我想把这个对象释放掉;
或者对象由于某种原因,经过多次release,于是对象引用计数器为0了,系统将这块内存释放掉,这个时候这个对象为nil,我称它为“空对象”。(注意:我这里强调的是“空对象”,下面我会拿它和“值为空的对象”作对比!!!)
所以对于这种空对象,所有关于retain的操作都会引起程序崩溃,例如字典添加键值或数组添加新原素等,具体可参考如下代码:
nil、Nil、NULL和NSNull的理解
 
二、NSNull
NSNull和nil的区别在于,nil是一个空对象,已经完全从内存中消失了,而如果我们想表达“我们需要有这样一个容器,但这个容器里什么也没有”的观念时,我们就用到NSNull,我称它为“值为空的对象”。如果你查阅开发文档你会发现NSNull这个类是继承NSObject,并且只有一个“+ (NSNull *) null;”类方法。这就说明NSNull对象拥有一个有效的内存地址,所以在程序中对它的任何引用都是不会导致程序崩溃的。参考代码如下:
nil、Nil、NULL和NSNull的理解
 
三、Nil
nil和Nil在使用上是没有严格限定的,也就是说凡是使用nil的地方都可以用Nil来代替,反之亦然。只不过从编程人员的规约中我们约定俗成地将nil表示一个空对象,Nil表示一个空类。参考代码如下:
nil、Nil、NULL和NSNull的理解
 
四、NULL
我们知道Object-C来源于C、支持于C,当然也有别于C。而NULL就是典型C语言的语法,它表示一个空指针,参考代码如下:
int *ponit = NULL;  
 
分享: 
24
喜欢
1
赠金笔赠金笔
阅读(4018)┊ 评论 (1)┊    收藏(0) ┊转载(7)    ┊ 喜欢▼ ┊打印┊举报
已投稿到:    排行榜 排行榜
前一篇:照片头信息的获取
后一篇:《悲惨世界》-- 不可不读的世界名著
评论 重要提示:警惕虚假中奖信息 [发评论]
用户1862771635
2015-12-11  10:49回复(0)
发评论
黄晓明-小号:您还未开通博客,点击一秒开通。
 

nil、Nil、NULL和NSNull的理解

标签:

原文地址:http://www.cnblogs.com/iOS-mt/p/5454913.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!