nil、Nil、NULL、NSNull

来源:互联网 发布:mysql类似nvl的函数 编辑:程序博客网 时间:2024/04/20 15:01

最近新浪面试问了这么个问题: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
原创粉丝点击