2
這裏有兩種方法可以生成NSString
。NSString格式問題
NSString *sBody = [NSString stringWithString:@"Hello"]
與
NSString *sBody = @"Hello"
大部分時間裏,我看到它的第一種方式。但是使用第二個也是「乾淨」的,還是不使用它更好?
謝謝,祝你有美好的一天!
這裏有兩種方法可以生成NSString
。NSString格式問題
NSString *sBody = [NSString stringWithString:@"Hello"]
與
NSString *sBody = @"Hello"
大部分時間裏,我看到它的第一種方式。但是使用第二個也是「乾淨」的,還是不使用它更好?
謝謝,祝你有美好的一天!
它們是等價的。它使用文字的代碼更少(第二個示例),所以我只是使用它。
這是一樣的,你幫助編譯器的第一種方式,但它已經在優化字符串變量方面做了很多工作。
第一個示例如何幫助編譯器? – Ryan 2011-02-25 19:31:08
如果它是一個字符串,則NSString類必須完成所有工作。因此,如果您使用第二個示例,編譯器會將其轉換爲與第一個示例相同的方式。 – 2011-02-25 19:37:35
呃,沒有。如果你使用'@「Hello」',那麼編譯器會動態地創建一個特殊形式的NSString並將其直接構建到編譯後的二進制文件的數據段中。它還採用原始C字符串數據(UTF-8格式)並將其放入二進制文件的文本段中。內置的NSString的數據ptr指向內置的C字符串。編譯器不會將其轉換爲方法調用,它只是在數據中生成並直接引用它(即單個「ldw」或「mov」指令)。 – 2011-02-26 00:06:19