nil, Nil, NULL和[NSNull null]的区别

  最近在项目中使用到各种空值判断,于是Google之,总结如下,当做备忘录。

一、nil

nil用来表示Objective-C空对象,它本身并不是一个对象(此处注意,下面跟[NSNull null]有区别)。它可以表示任意id或者通过@interface声明的Objective-C类型。

eg.

id nilId = nil;
NSString *nilStr = nil;

 

二、Nil

Nil用来表示Objective-C的空Class,它本身也不是一个对象。

Nil在实际开发中并不常用到,它用来标志一个对象的Class为空。

eg.

Class NilClass = Nil;
Class notNilClass = [NSString class];

 

三、NULL

NULL用来表示C指针相关的空值。

eg.

int *NULLPointerToInt = NULL;
char *NULLPointerToChar = NULL;
struct TreeNode *NULLRootNode = NULL;

 

四、NSNull

NSNull是一个类,它只有一个类方法+[NSNull null]. 一般使用这个类方法来标志Objective-C的空对象,但是它是一个对象,可以用到一些属性必须是对象的情况。

eg.

此时,设置为nil会在运行时抛出exception的。

NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:nil forKey:@"someKey"];

如果设置为[NSNull null],则不会出现问题。

NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:[NSNull null] forKey:@"someKey"];

 

以上就是对这几个表示空值的标识符的总结。

JackCheng

2013/05/20

 

posted on 2013-05-20 15:42  Jack-Cheng  阅读(194)  评论(0)    收藏  举报

导航