runtime

ios中nil、Nil、Null、[NSNull null]区别

2017-11-22  本文已影响0人  ildream

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是不等价的。

最后再解释一下,空对象值为空的对象的区别:

“空对象”是已经释放了内存地址的对象,即不存在的对象。

“值为空的对象”是分配了地址,但是没有值得对象,是实际存在的对象。

上一篇 下一篇

猜你喜欢

热点阅读