2009-06-10 94 views

回答

9

這是因爲testString可以等於nil。發送信息至nil返回nilNSOrderedSame等於0,而0等於nil

NSLog(@"nil == NSOrderedSame = %d", (nil == NSOrderedSame)); //nil == NSOrderedSame = 1 
NSLog(@"[nil compare:@\"arf\"] == nil = %d", ([nil compare:@"arf"] == 0)); //[nil compare:@\"arf\"] == nil = 1 

爲了避免這種保證的對象不是nil比較之前,例如:

if (testString != nil && [testString compare:@"testString"] == NSSOrderedSame) ... 

注:我添加了這個問題,所以我不會再犯這樣的錯誤。

+1

這是一個非常糟糕的主意! NSString比較文檔的參數爲「此值不能爲零」。所以如果testString爲零,可能會崩潰或做其他不好的事情。 – 2009-06-11 01:54:09

5

可能[anObject aString]返回nil,發送nil消息返回0,並且返回0 == NSOrderedSame。

相關問題