nil 就是空对象。把一个对象置成nil之后,就不能对其进行retain, copy等引用计数相关的操作了
在iOS中,Nil完全等同于nil。
NUll就是C语言中的一个空指针,在Objective-C中也可以使用。
[NSNull null]是值为空的对象,nil是一个空对象,已经完全从内存中消失了,而如果我们想表达“我们需要有这样一个对象,但这个对象里什么也没有”的观念时,就需要[NSNull null]这个对象了。oc中数组、字典等对象中插入nil会crash,但是我们可以插入值为空的对象[NSNull null].
接下来我们看看nil、Nil、Null 是不是等价的呢?
上面两个图可以看出 nil == Nil == Null 所以它们在object-c中是可以通用的。都表示空对象的意思。
[NSNull null]是值为空的对象,和nil、Nil、Null是不等价的。
最后再解释一下,空对象和值为空的对象的区别:
“空对象”是已经释放了内存地址的对象,即不存在的对象。
“值为空的对象”是分配了地址,但是没有值得对象,是实际存在的对象。