2014-01-13 36 views
2

將使用重複的NSString的目標C

NSString* Test=[NSString stringWithString:@"Words"]; 

已經超過

NSString* [email protected]"Words"; 

任何優勢,或只是多餘的?

+0

不.NSString是不可變的,所以製作副本沒有任何用處(除了咀嚼時間/空間)。同樣,假設'someString'是一個(不可變的)NSString,非常流行的'[NSString stringWithFormat:@「%@」,someString]'是浪費時間。我今天早些時候看到,'[NSString stringWithFormat:someString]'是非常危險的,因爲'someString'可能包含'%'字符。 –

回答

2

這是多餘的。 NSString對象是不可變的(無法更改),所以沒有任何優勢可以直接使用文字。

如果你做了而下面,:

NSMutableString *test = [NSMutableString stringWithString:@"Words"]; 

那麼這是一個不同的故事。

+0

當然,對於你的「不同的故事」,「[@」Words「mutableCopy]'更簡潔,意圖更清晰。 –

+0

@HotLicks但是遠離OP自己的示例代碼... – trojanfoe

1

任何現代ObjC編譯器會警告你,如果你嘗試實例化一個像這樣的字符串...

使用「stringWithString:」用文字是多餘的

使用@"literals"除非你確實需要輸入,一拉 「操作」 ......

NSString * w = [NSString stringWithUTF8String:"Words"]; 

NSString * join = [NSString stringWithFormat:@"con%@enate", @"cat"]