美文网首页
iOS - nil,Nil,NULL,NSNull 的区别

iOS - nil,Nil,NULL,NSNull 的区别

作者: 壮骨 | 来源:发表于2018-01-25 15:01 被阅读0次

nil

nil 是 Objective-C 对象空值的意思, 对应于未知类型 id 或者其他 Objective-C类型的对象 。

NSString *someString = nil;
NSURL *someURL = nil;
id someObject = nil;

if (anotherObject == nil) // do something

对于nil,只有在NSArray初始化时在作为结束的一个标志。这种情况也不是作为元素存储。

NSArray *array = [NSArray arrayWithObjects:@"one", @"two", nil];

Nil

Nil 是 Objective-C 类为空, 对应于 Class. 因为大部分代码不需要引用class变量,所以这个并不常用。

Class someClass = Nil;
Class anotherClass = [NSString class];

NULL

NULL C指针为空值。

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

NSNull

NSNull 是一个类用来代表空对象,实际上就是 +[NSNull null]. 与 nil 不一样因为空 nil 就是字面上的孔不是一个对象. NSNull的实例对象,是一个对象。

NSNull 经常用在 Foundation collections 因为它们不能存储 nil 值. 比如在dictionaries, -objectForKey: 返回一个 nil对应的key没有存储对象在里面,这个key没有添加进字典里. 如果你想用来表明,这个kety清楚地被添加进了,只不过没有值,你应该用 [NSNull null].

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

// 下面这种赋值时错误的,因为不能设nil
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:nil forKey:@"someKey"];

相关文章

网友评论

      本文标题:iOS - nil,Nil,NULL,NSNull 的区别

      本文链接:https://www.haomeiwen.com/subject/lruvaxtx.html