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) 收藏 举报
浙公网安备 33010602011771号