nil、Nil、NULL和NSNull的理解 nil null区别

nil、Nil、NULL和NSNull的理解 nil null区别

其实早就想研究一下nil、Nil、NULL和NSNull之间的区别,只是工作上除了nil,其它的几乎少有用到,所以一直拖到今天。有时候感觉自己越来越浮躁,对细微处的知识理解不够深入,因此这里给自己提个醒--在以后的工作当中要始终保持一种钻研的精神!

言归正传,我们来分别介绍一下这四种类型:

一、nil

我们给对象赋值时一般会使用object = nil,表示我想把这个对象释放掉;

或者对象由于某种原因,经过多次release,于是对象引用计数器为0了,系统将这块内存释放掉,这个时候这个对象为nil,我称它为“空对象”。(注意:我这里强调的是“空对象”,下面我会拿它和“值为空的对象”作对比!!!)

所以对于这种空对象,所有关于retain的操作都会引起程序崩溃,例如字典添加键值或数组添加新原素等,具体可参考如下代码:


二、NSNull

NSNull和nil的区别在于,nil是一个空对象,已经完全从内存中消失了,而如果我们想表达“我们需要有这样一个容器,但这个容器里什么也没有”的观念时,我们就用到NSNull,我称它为“值为空的对象”。如果你查阅开发文档你会发现NSNull这个类是继承NSObject,并且只有一个“+(NSNull *)null;”类方法。这就说明NSNull对象拥有一个有效的内存地址,所以在程序中对它的任何引用都是不会导致程序崩溃的。参考代码如下:


三、Nil

nil和Nil在使用上是没有严格限定的,也就是说凡是使用nil的地方都可以用Nil来代替,反之亦然。只不过从编程人员的规约中我们约定俗成地将nil表示一个空对象,Nil表示一个空类。参考代码如下:

四、NULL

我们知道Object-C来源于C、支持于C,当然也有别于C。而NULL就是典型C语言的语法,它表示一个空指针,参考代码如下:
int *ponit = NULL;

  

爱华网本文地址 » http://www.aihuau.com/a/25101015/247849.html

更多阅读

城市设计:现代主义、传统、绿色和系统的观点

【中文书名】《城市设计:现代主义、传统、绿色和系统的观点》【原著名称】City Design:Modernist, Traditional, Green andSystems Perspectives【原著出版者】Routledge【原著作者】Jonathan Barnett【ISBN】978-7-121-24324-0

食品、保健品和药品的批准文号区别 食品药品批准文号查询

食品、保健品和药品的批准文号区别食品、保健品和药品均使用不同的批准文号,而这些批准文号在近几年又因为审批权限移交、政策调整和法规修订等原因,曾有过更换。对于药品,现在国家规定统一使用的批准文号是“国药准字”号,即平常所说

生铁、熟铁和钢的特点 生铁和熟铁

块炼铁(熟铁)是铁矿石在较低温度下还原而成,形成比较纯的铁颗粒和矿渣,呈海绵状,虽然铁颗粒的纯度比较高,但杂质聚合成大量的矿渣分布期间,需要大量锻打将矿渣排出,但锻打也有极限,不能超过二三十次,这里还有金属疲劳问题。熟铁软,塑性好,容易变

反馈回路模型——人类发展、学习、创造和天才的理论

反馈回路模型——人类发展、学习、创造和天才的理论原文:WinWenger,Image-Stream发明者,加速学习、大脑开发等领域的先驱翻译:阿扁翻译前记:这是一篇不同寻常的文章,它用一个反馈回路模型述说了人类发展、学习、创造和天才的基本原理,而

声明:《nil、Nil、NULL和NSNull的理解 nil null区别》为网友情绪操控生活分享!如侵犯到您的合法权益请联系我们删除