nil和Nil及NULL和NSNull的区别 - OC
2020-12-01 本文已影响0人
牛奶红茶
https://www.jianshu.com/p/2b44e1c346e7
一.nil
我们给对象赋值时一般会使用object = nil,表示我想把这个对象释放掉,或者对象由于某种原因,经过多次release,于是对象引用计数为0了,系统将这块内存释放掉,这个时候这个对象为nil,我们称它为“空对象”(“空对象”和“值为空的对象”不是一个东西)。
所以对于这种空对象,所有关于retain的操作都会引起程序崩溃,例如字典添加键值或数组添加新元素
数组中添加nil,崩溃 字典中添加nil,崩溃二.NSNull
NSNull和nil的区别在于,nil是一个空对象,已经完全从内存中消失了,而如果我们想表达"我们需要这样一个容器,但是这个容器里什么也没有"的概念时,我们就用到了NSNull,我们称它为"值为空的对象",如果你查阅开发文档会发现NSNull这个类时继承自NSObject,并且只有一个”+(NSNull*)null:“类方法,这就说明NSNull对象拥有一个有效的内存地址,所以在程序中对它的引用都不会导致程序的崩溃
数组和字典添加NSNull三 ,Nil
nil和Nil在使用上是没有严格限定的,也就是说凡事使用nil的地方都可以用Nil来代替,反之亦然,只不过从编程人员的规约中我们约定俗成地将nil表示一个空对象,Nil表示一个空类,
nil和Nil的区别四.NULL
Object-C来源于C,支持于C,当然也有别于C,而NULL就是典型的C语言的语法,它表示一个空指针,
int *point = NULL;