Nil,nil,NSNULL,NULL的区别

1、nil
编程

咱们给对象赋值时通常会使用object = nil,表示我想把这个对象释放掉;数组

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

因此对于这种空对象,全部关于retain的操做都会引发程序崩溃,例如字典添加键值或数组添加新原素等。指针

2、NSNull对象

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

3、Nil内存

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

nil、Nil、NULL和NSNull的理解文档

4、NULL
it

咱们知道Object-C来源于C、支持于C,固然也有别于C。而NULL就是典型C语言的语法,它表示一个空指针,参考代码以下:

int *ponit = NULL;  

相关文章
相关标签/搜索