2010-06-30 37 views
1

xCode的「構建和分析」抱怨「s」可能是垃圾。在iPhone上初始化NSString的最佳實踐

哪個更好的解決方案? A,B或C?

NSString *s;    // A 
NSString *s = nil;  // B 
NSString *s = @"";  // C 

if(x == 1) s = @"you picked 1"; 
if(x == 2) s = @"you picked 2"; 
if(x == 3) s = @"you picked 3"; 

回答

2

我總是

NSString *s = nil; 

去作爲默認初始值。它比一個空字符串更明智(空字符串是一個「事物」,而nil是一個未知值),並且由於您可以在Objective-C中發送nil消息,所以它(通常)不會導致很大的問題,如果我以某種方式忘記給它一個「真正」的價值。

+0

零不是未知的,它是非常明確的。另一方面,空字符串也可能分配內存。零是要走的路。 – Eiko 2010-06-30 15:45:52

+0

我的意思是說'nil'代表一個未知值,而空字符串是一個已知的值。 – mipadi 2010-06-30 16:13:07

+0

像'NSString * s;'初始化時's'的'value'是什麼?它會是'無',就像沒有手動賦值的ivars一樣,還是會變成別的東西? – 2010-06-30 18:36:44