OC 中 Nil nil NULL NSNull 的区别

本文深入探讨了Objective-C编程语言中nil、NULL和NSNull的区别及其用法,详细解释了这三个概念在代码实现层面的含义与应用场景,并通过实例展示了如何正确地使用它们以避免常见错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nil:对象的空指针  是一个空对象

Nil:  类的空指针     是一个空类

NULL:其它类型的空指针,如一个c类型的内存指针, 是一个值

NSNull:在集合对象中,表示空值的对象   

注意:

1.     若对象为nil:        [obj  test]将返回NO,而不是NSException(抛出异常)。

     若对象为NSNull:    [obj message]将抛出异常(NSException)


2.    nil在OC中的通过jump to Definition指向的定义为
        #ifndef nil
               #define nil NULL
        #endif /* ! nil */

       可以看出,其实nil只不过是NULL的另外一个别称而已。

       NULL在OC中的定义为:

       #ifndef NULL
             #define NULL    __DARWIN_NULL
       #endif /* ! NULL */

      从技术实现上来说,nil、NULL都是一样的。但是实际上这种方式能够增加代码的可读性。如果你给方法传递NULL值,那么参数就认为接收到的是C指针。如果是nil,那么认为接受的是一个对象。而Nil,则认为接受的是类(class)。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值