2011-02-25 86 views
2

這裏有兩種方法可以生成NSStringNSString格式問題

NSString *sBody = [NSString stringWithString:@"Hello"] 

NSString *sBody = @"Hello" 

大部分時間裏,我看到它的第一種方式。但是使用第二個也是「乾淨」的,還是不使用它更好?

謝謝,祝你有美好的一天!

回答

4

它們是等價的。它使用文字的代碼更少(第二個示例),所以我只是使用它。

2

這是一樣的,你幫助編譯器的第一種方式,但它已經在優化字符串變量方面做了很多工作。

+0

第一個示例如何幫助編譯器? – Ryan 2011-02-25 19:31:08

+0

如果它是一個字符串,則NSString類必須完成所有工作。因此,如果您使用第二個示例,編譯器會將其轉換爲與第一個示例相同的方式。 – 2011-02-25 19:37:35

+0

呃,沒有。如果你使用'@「Hello」',那麼編譯器會動態地創建一個特殊形式的NSString並將其直接構建到編譯後的二進制文件的數據段中。它還採用原始C字符串數據(UTF-8格式)並將其放入二進制文件的文本段中。內置的NSString的數據ptr指向內置的C字符串。編譯器不會將其轉換爲方法調用,它只是在數據中生成並直接引用它(即單個「ldw」或「mov」指令)。 – 2011-02-26 00:06:19