nil、Nil、NULL、NSNull

最近新浪面试问了这么个问题:nil、Nil、NULL、NSNull的区别,当时没有回答出来,平时用的时候也没有特别在意这个问题。现在找好资料总结一下。

nil

nil是ObjC对象的字面空值,对应id类型的对象或者使用@interface声明的ObjC对象
例如:
NSString *str = nil;
NSArray *array = nil;
id objc = nil;
if(self == nil){...}

Nil

Nil是Objc类类型的书面空值,对应Class类型对象。
例如:
Class someClass = Nil;
Class antherClass = [NSString class];

NULL

NULL是任意C指针空值

例如:

int *pointerToInt = NULL;
char *pointerToChar = NULL;
struct TreeNode *rootNode = NULL;

NSNull

NSNull是一个代表空值的类,是一个ObjC对象,实际上它只有一个单例方法:+[NSNull null],一般用于表示集合中值为空的对象。
例如:
// 因为 nil 被用来用为集合结束的标志,所以 nil 不能存储在 Foundation 集合里。
NSArray *array = [NSArray arrayWithObjects:@"one", @"two", nil];
 
// 错误的使用
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:nil forKey:@"someKey"];
 
// 正确的使用
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:[NSNull null] forKey:@"someKey"];

NIL或NSNil

这两个不存在。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值