美文网首页
OC中nil、Nil、NSNull和NULL的理解

OC中nil、Nil、NSNull和NULL的理解

作者: MiniCoder | 来源:发表于2020-03-10 12:15 被阅读0次

nil

Defines the id of a null instance.定义空实例的id。

我们给对象赋值时一般会使用object = nil,表示我想把这个对象释放掉;
或者对象由于某种原因,经过多次release,于是对象引用计数器为0了,系统将这块内存释放掉,这个时候这个对象为nil,我称它为“空对象”。(注意:我这里强调的是“空对象”,下面我会拿它和“值为空的对象”作对比!!!)

所以对于这种空对象,所有关于retain的操作都会引起程序崩溃,例如字典添加键值或数组添加新原素等,具体可参考如下代码 截屏2020-03-1012.13.00.png

Nil

Defines the id of a null class.定义空类的id。

nil和Nil在使用上是没有严格限定的,也就是说凡是使用nil的地方都可以用Nil来代替,反之亦然。只不过从编程人员的规约中我们约定俗成地将nil表示一个空对象,Nil表示一个空类。参考代码如下: 截屏2020-03-1012.15.27.png

NSNull

我们看一个NSNull的官方定义
Summary

A singleton object used to represent null values in collection objects that don’t allow nil values.
一个单例对象,用于表示不允许空值的集合对象中的空值。

NSNull和nil的区别在于,nil是一个空对象,已经完全从内存中消失了,而如果我们想表达“我们需要有这样一个容器,但这个容器里什么也没有”的观念时,我们就用到NSNull,我称它为“值为空的对象”。如果你查阅开发文档你会发现NSNull这个类是继承NSObject,并且只有一个“+ (NSNull *) null;”类方法。这就说明NSNull对象拥有一个有效的内存地址,所以在程序中对它的任何引用都是不会导致程序崩溃的。

参考代码如下: 截屏2020-03-1012.14.18.png

NULL

NULL是无类型的,只是一个宏,它代表为空。用于c语言的各种数据类型的指针为空。
我们知道Object-C来源于C、支持于C,当然也有别于C。而NULL就是典型C语言的语法,它表示一个空指针,参考代码如下:

int *ponit = NULL;

相关文章

  • 关于nil null一些小知识

    1.OC中的nil Nil NULL NSNull nil:是指OC中"对象"的空指针,所以基本数据类型和结构体不...

  • NSObject——概念原理

    1、野指针 2、僵尸对象 3、nil/Nil/NULL/NSNull的区别 nil:指向oc中对象的空指针 Nil...

  • Objective-c nil, Nil, NULL和NSNul

    在OC中可能经常会遇到 nil,Nil,NULL和NSNull,下面分析一下之间的区别: 一、nil:对象为空定义...

  • Objective-C中nil、Nil、NULL和NSNull的

    在OC中可能经常会遇到 nil,Nil,NULL和NSNull,下面分析一下之间的区别: SymbolValueM...

  • iOS 每天一道面试题

    同为菜逼,共同努力。 1.nil Nil NULL NSNull 区别。 nil:指向oc中对象的空指针,针对对象...

  • OC中nil、Nil、NSNull和NULL的理解

    nil Defines the id of a null instance.定义空实例的id。 我们给对象赋值时一...

  • iOS 空值总结

    一、nil,Nil,NSNull及NULL的区别 1、nil:指向一个对象的空指针(对于OC中的对象而使用的)。 ...

  • iOS 空值总结

    一、nil,Nil,NSNull及NULL的区别 1、nil:指向一个对象的空指针(对于OC中的对象而使用的)。 ...

  • Objective-C的空

    nil:OC为空 Nil:OC的类为空 NULL:c/c++的空指针 NSNull:对nil的包装 可以存储到数组...

  • 各种nil,野指针,僵尸对象

    nil:OC中的对象的空指针 Nil:OC中类的空指针 NULL:C类型的空指针 NSNull:数值类的空对象 野...

网友评论

      本文标题:OC中nil、Nil、NSNull和NULL的理解

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