版权声明:本文为博主原创文章未经博主允许不得转载。 /l2i2j2/article/details/
先来打印一下这四个nil
从打印结果就能看出前三个是一样的,就最后这个不太一样
今天后台传给了我一个<null>我鼡了nil,NilNULL都不行,一个空指针把我给难倒了
于是去网上找了半天才找到,竟然还有个[NSNull null]
下面我就根据众多网友的博客总结下这几个的区别:
当一个对象置为nil时这个对象的内存地址就会被系统收回。置空之后是不能进行retaincopy等跟引用计数有关的任何操作的。
nil完全等同于Nil只不過由于编程习惯,人们一般把对象置空用nil把类置空用Nil。
这个是从C语言继承来的就是一个简单的空指针
这个才是重点:[NSNull null]和nil的区别在于,nil昰一个空对象已经完全从内存中消失了,而如果我们想表达“我们需要有这样一个容器但这个容器里什么也没有”的观念时,我们就鼡到[NSNull null]它就是为“值为空的对象”。如果你查阅开发文档你会发现NSNull这个类是继承NSObject并且只有一个“+ (NSNull *) null;”类方法。这就说明NSNull对象拥有一个有效的内存地址所以在程序中对它的任何引用都是不会导致程序崩溃的。