nil、Nil、NULL与NSNull的区别

本文探讨了在Objective-C中nil、Nil、NULL和NSNull的区别。nil用于对象指针,发送消息时返回NO且不抛出异常;Nil用于类指针,表示类的实例不存在;NULL是通用空指针,适用于C语言指针;NSNull作为一个特殊对象,用于表示‘null’值,避免数组或字典中的空值问题。
摘要由CSDN通过智能技术生成

1、nil: 指向一个对象的指针为空,当向nil发送消息时,返回NO,不会有异常,程序将继续执行下去,例如:

NSString *name = nil;

2、 Nil :指向一个类的指针为空,例如:

Class aClass = Nil;

3、 NULL:用于非对象指针赋空值,比如 指向C类型的指针为空,例如:

int *pInt = NULL;
char *chChar = NULL;

4、 NSNull:在Objective-C中是一个类,只是名字中有个Null,NSNull有 + (NSNull *)null; 单例方法,多用于集合(NSArray,NSDictionary)中值为空的对象,向NSNull的对象发送消息时会收到异常。例如:

NSMutableDictionary *mutableDictionary = [[NSMutableDictionary alloc] init];
[mutableDictionary setObject:nil forKey:@"Key"]; // 会引起Crash
[mutableDictionary setObject:[NSNull null] forKey:@"Key"]; // 不会引起Crash






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值