在可可中,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]
是一個singleton,保證在內存中始終保持相同的位置(這是==
在這種情況下測試的結果)。不要用普通物體做這件事。
更多關於docs。
'NULL'是一樣的'nil'並具有內存地址'0x0000000'。'[NSNull null]'是不是'nil'的對象,但是代表'nil'和'NULL'。這是你應該在這裏使用。 –