浅析nil、Nil、NULL和NSNull之间的区别与联系

本文详细探讨了Objective-C中nil、Nil、NULL和NSNull的区别和联系。nil通常用于给对象赋空值,显示为(null)且有地址;Nil主要用于类对象,与nil可互换;NULL是C语言的空指针;而NSNull是一个类,用于表示“空对象”的容器。

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

时至今日终于可以坐下来写博客了,一直对nil、Nil、NULL和NSNull的理解很模糊,今天特来区分一下

首先说一下IOS中开发最常用的nil:

1、nil

nil表示一个空对象,用于给OC中的对象赋值。

执行下列语句:

NSLog(@"%@",nil);

printf("%p",nil);

输出结果是:

(null)

0x0

由此看出nil表示一个真实的对象,有地址,且值为null

注意这样一种情况:


2、Nil

其实nil和Nil没有严格的区别,凡是能用nil的地方,都可以使用Nil,但程序员往往喜欢用nil为一个实例对象赋值,而使用Nil为一个类对象赋值

3、NULL

由于OC是C语言的一个超集,自然有别于C,NULL表示一个空指针。为C语言所用。

4、NSNull

从名字就可以看出,NSNull是一个类,查看文档可以知道,该类继承于NSObject,且只用一个类方法 + (NSNull *)null;

在程序中,如果我们想使用一个实例对象表示这样一种情况:“我们需要有这样一个容器,但这个容器里什么也没有”这是我们就可以使用NSNull表示一个值为空的对象

使用方法如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值