美文网首页runtime
ios中nil、Nil、Null、[NSNull null]区别

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

作者: ildream | 来源:发表于2017-11-22 11:25 被阅读0次

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

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

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

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

相关文章

网友评论

    本文标题:ios中nil、Nil、Null、[NSNull null]区别

    本文链接:https://www.haomeiwen.com/subject/wfnrettx.html