NULL和nullptr和nil和Nil还有NSNull

NULL

C语言中代表空指针

nullptr

C++中的空指针

nil和Nil

nil定义为实例对象的空值(a null instance)

Nil定义为类对象的空值(a null class)

Swift 1.2 目前只有nil而没有Nil。任何类型的可选值都可以被设置为nil,不只是对象(object)类型

NSNull

@interface NSNull : NSObject <nscopying, nssecurecoding>
+ (NSNull *)null;
@end</nscopying, nssecurecoding>

**NSNull是个单例,只有一个方法null,也用来表示空值。但它出现在一些nil无法胜任的场景来替代nil来表示空值。比如NSArray和NSDictionary中nil代表数组或字典的末尾(即使nil不出现在末尾,也会将其切断,nil后面的值会丢失),此时只能用NSNull对象来表示空值

NSNull *nullValue = [NSNull null];
NSArray *arrayWithNull = @[nullValue];
NSLog(@"arrayWithNull: %@", arrayWithNull);
// Output: "arrayWithNull: (<null>)"</null>

虽然NSNull语义上等同于nil,但两者的值是不相同的:

**id aValue = [arrayWithNull objectAtIndex:0];**
if (aValue == nil) {
    NSLog(@"equals nil");
}
else if (aValue == [NSNull null]) {
    NSLog(@"equals NSNull instance");
    if ([aValue isEqual:nil]) {
        NSLog(@"isEqual:nil");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值