nil
nil
是 Objective-C 對(duì)象空值的意思, 對(duì)應(yīng)于未知類(lèi)型 id
或者其他 Objective-C類(lèi)型的對(duì)象 。
NSString *someString = nil;
NSURL *someURL = nil;
id someObject = nil;
if (anotherObject == nil) // do something
對(duì)于nil,只有在NSArray初始化時(shí)在作為結(jié)束的一個(gè)標(biāo)志阐肤。這種情況也不是作為元素存儲(chǔ)渠概。
NSArray *array = [NSArray arrayWithObjects:@"one", @"two", nil];
Nil
Nil
是 Objective-C 類(lèi)為空, 對(duì)應(yīng)于 Class
. 因?yàn)榇蟛糠执a不需要引用class變量忘朝,所以這個(gè)并不常用鞠值。
Class someClass = Nil;
Class anotherClass = [NSString class];
NULL
NULL
C指針為空值蹋绽。
int *pointerToInt = NULL;
char *pointerToChar = NULL;
struct TreeNode *rootNode = NULL;
NSNull
NSNull
是一個(gè)類(lèi)用來(lái)代表空對(duì)象,實(shí)際上就是 +[NSNull null]
. 與 nil
不一樣因?yàn)榭?nil
就是字面上的孔不是一個(gè)對(duì)象. NSNull
的實(shí)例對(duì)象嘱丢,是一個(gè)對(duì)象。
NSNull
經(jīng)常用在 Foundation collections 因?yàn)樗鼈儾荒艽鎯?chǔ) nil
值. 比如在dictionaries, -objectForKey:
返回一個(gè) nil
對(duì)應(yīng)的key沒(méi)有存儲(chǔ)對(duì)象在里面,這個(gè)key沒(méi)有添加進(jìn)字典里. 如果你想用來(lái)表明祠饺,這個(gè)kety清楚地被添加進(jìn)了越驻,只不過(guò)沒(méi)有值,你應(yīng)該用 [NSNull null]
.
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:[NSNull null] forKey:@"someKey"];
// 下面這種賦值時(shí)錯(cuò)誤的道偷,因?yàn)椴荒茉O(shè)nil
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:nil forKey:@"someKey"];