是三者的方法來創建字符串...我試圖解釋,你一個接一個。
一個人認爲你必須記住,在Objective-c字符串表示爲@""
。 無論什麼來雙引號是字符串,例如@"Hello"
是string
。 @""
基本上是創建NSString
。
NSString *theString = @"hello";
編輯:
在這次發言中,我們正在創建一個NSString
不變。 Objective-C
字符串常量在編譯時創建,並存在於整個程序的執行過程中。
2. NSString *string1 = [NSString stringWithString:@"This is"];
在此再次聲明,我們正在創建的NSString
的autorelease
對象,但在這裏滑差速器。比第一種情況。這裏我們使用另一個NSString
對象來創建NSString
的新對象autorelease
。所以當我們已經有NSString
對象時,我們通常使用stringWithString
方法,並且我們需要另一個具有相似內容的NSString
對象。
3. NSString *string =[[NSString alloc]init];
string [email protected]"Hello";
這裏,在第一條語句,你正在創建你所擁有的NSString
對象,這是你的責任,以釋放它(在非ARC碼),一旦你這個對象來完成。 第二條語句與案例1相似,用字符串文字創建字符串Object。 但是當你把這兩個報表一併它會導致你memory-leak
(在非ARC代碼),因爲在陳述一個你分配 & 啓動內存新的字符串對象,並在第二個語句右後你再將新的字符串對象分配給相同的字符串引用。
@trojanfoe你能詳細點嗎? – Peres
'string'被創建(空),然後用一個常量字符串重新初始化。這是1)的低效版本。 – trojanfoe
這是一個非常不同的解釋,而不是「被打破」。特別是當你在iOS開發中與新人交談時。 – Peres