讓我試着解釋它更詳細:
你有一個字符串變量.h
文件。鑑於沒有負載你賦值爲:
test = [NSString stringWithFormat:@"sample"];
在這段代碼實際上happning什麼是你的測試是一個自動釋放的對象。當你使用這個和對象沒有alloc
和init
這是自動釋放對象,並將釋放內存後,你佔據它的方法。
爲避免這種情況,您可以使用@ Mehul的解決方案通過創建屬性。這是違反封裝的概念。有時你有不想在課堂以外訪問的對象,或者不想用對象顯示。使用在這些條件下:
test = [[NSString stringWithFormat:@"sample"] retain]; // or
test = [[NSString alloc] initWithFormat:@"sample"];
這將讓您的字符串活着,直到你釋放它。
還有一種方法不好用,但想告訴你,這樣你就可以更好地理解它。使用
test = @"sample";
如果你不想追加字符串或格式,使用它,你可以簡單的字符串賦值給你NSString
對象。
使用此將有一個無限retainCount
您的測試變量。你可以使用它來避免崩潰,但這不是可取的,因爲正如我所說的那樣,有一個無限的retaiCount
你不能釋放它,並在使用後釋放你的內存。所以更早的方法更加正確。
對於所有使用類方法創建的自動釋放對象,而不是使用init
,這是正確的。
希望這會讓你更清楚。
初始化.h文件中屬性還 – akk 2012-08-01 11:33:21
什麼是控制檯消息當它崩潰? – 2012-08-01 11:34:43
@RKK我初始化.h文件中的屬性並在.m文件中合成 – Bala 2012-08-01 11:36:28