黑马程序员----nil/Nil/NULL的区别

本文详细介绍了OC中nil、Nil和NULL的区别。nil用于对象指针,向nil发送消息不会出错;Nil专指类的空指针;NULL则用于基本数据类型,向其发送消息会导致异常。理解这些概念有助于避免编程错误。
摘要由CSDN通过智能技术生成

在OC中nil和NULL是不同的,想nil发消息是不会报错的,但是向NULL发消息是会报错的。简单记录下区别:

(一)

nil:指向oc中对象的空指针

Nil:指向oc中类的空指针

NULL:指向其他类型的空指针,如一个c类型的内存指针

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

若obj为nil:

[obj message]将返回NO,而不是NSException

若obj为NSNull:

[obj message]将抛出异常NSException

(二)
nil和NULL从字面意思来理解比较简单,nil是一个对象,而NULL是一个值,我的理解为nil是将对象设置为空,而NULL是将基本类型设置为空的。而且我们对于nil调用方法,不会产生crash或者抛出异常。
看一下用法:

NSURL *url = nil;
Class class = Nil;
int *pointerInt = NULL;
nil是一个对象指针为空,Nil是一个类指针为空,NULL是基本数据类型为空。

这五个概念很容易混淆,在一些场合下他们具有同样的用法。空指针是指该指针未指向一块有意义的内存区。如int *p; int *p = NULL;

NSObject *obj1 = [[NSObject alloc] init];
NSObject *obj2 = [NSNull null];
NSObje
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值