在 Cocoa 中,NULL
并没有真正使用,但通常保留用于使用标准 C 指针的情况。
由于 Objective-C 也是 C,这当然只是一种约定,但很有用——它允许您设置指向 的NSString*
指针nil
,以及指向 的char*
或void*
指针NULL
,一眼就能看出区别。
此外,在 Cocoa 中,集合(数组、字典、集合)不能保存nil
值,因此正如其他海报所指出的那样,您必须使用占位符,即[NSNull null]
.
但请注意,[NSNull null]
它只是一个占位符,而且由于集合只能保存对象,所以这个占位符也是一个标准的 Objective-C 对象。
因此,如果您在条件语句中使用它,则需要对其进行正确测试,例如:
id myVar = [NSNull null];
// Stuff...
if ( myVar == [NSNull null] ) {
// myVar has not been changed, do something
}
这与标准 C 习惯用法不同,您可以NULL
直接在条件语句中测试一个值:
void *myPointer = NULL;
// Stuff...
if ( myPointer ) {
// More stuff if pointer uninitialized
}
您可能还想知道为什么突然可以[NSNull null]
使用==
运算符来测试变量是否相等?那是因为[NSNull null]
它是一个单例,保证在内存中始终具有相同的位置(==
在这种情况下这是测试的内容)。不要对普通对象执行此操作。
更多关于它的文档。