美文网首页
快速了解OC中的nil、Nil、NULL、NSNull

快速了解OC中的nil、Nil、NULL、NSNull

作者: 奶茶大叔 | 来源:发表于2020-07-20 08:27 被阅读0次

在网上看过很多绕口的定义,比如下面这些:

nil: 指向oc中对象的空指针,计数器0
Nil: 指向oc中类的空指针
NULL: 指向其他类型的空指针,如一个c类型的内存指针
NSNull: 在集合对象中,表示空值的对象。

这样的显然不能帮助更好的理解,那么结合源码再去理解:

nil: #define nil ((id)0)——–>指向oc中对象的空指针
NULL:#define NULL ((void *)0)——–>NULL其实是C语言中的定义
NSNull: 用在不能使用nil的场合。——–>下面会进行详细描述

NSNull补充

对于NSNull,如果还是困难,那就记住这一句话:NSNull是nil的对象形式。

为什么要这样呢?举个例子,OC中的数组内可以保存所有类型对象,但是不能保存基本类型。
NSArray里不能放入int、double这样类型的,只能放入对象。那么这时候如果你想向数组存入一个空对象,存nil是不合理的,这时就可以用NSNull代替。所以说NSNull是nil的对象形式。

nil和NSNull除了类型完全没有区别吗

实际上是有的:
若obj为nil:
[obj message]将返回NO,而不是NSException
若obj为NSNull:
[obj message]将抛出异常NSException,即NSNull类似于Java的null,可以报空指针错误

相关文章

  • NSObject——概念原理

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

  • 快速了解OC中的nil、Nil、NULL、NSNull

    在网上看过很多绕口的定义,比如下面这些: nil: 指向oc中对象的空指针,计数器0Nil: 指向oc中类的空指针...

  • 关于nil null一些小知识

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

  • iOS 每天一道面试题

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

  • iOS 空值总结

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

  • iOS 空值总结

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

  • Objective-c nil, Nil, NULL和NSNul

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

  • Objective-C的空

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

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

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

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

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

网友评论

      本文标题:快速了解OC中的nil、Nil、NULL、NSNull

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