0
假設我有一個已經通過alloc/init組合初始化爲字符串的變量。如果我通過處理重新分配內存,是否會泄漏內存?重新分配變量時是否有內存泄漏?
NSString *s = [[NSString alloc] initWithString:someOtherStringVariable];
s = [s stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
這裏是否存在內存泄漏?如果是這樣,我是否需要創建另一個變量(例如s2),執行此分配,然後釋放原始?現在
NSString *s = [[NSString alloc] initWithString:someOtherStringVariable];
NSString *s2 = [s stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
[s release];
,如果其他字符串就是一個常數,如@「其他的一些字符串」。我需要擔心泄漏嗎?即。
NSString *s = [[NSString alloc] initWithString:@"Some other string"];
s = [s stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
感謝
謝謝。你指出的例子是名義上的。我以爲我曾經在某處讀過,在任何情況下都有爲字符串字面量分配內存,所以它永遠不會被釋放。所以它的保留數是無關緊要的。 – farhadf 2009-08-10 17:59:21
的確,您不必釋放/手動記憶管理字符串文字。但是,在你的代碼中,你不要直接賦值字符串,而應該在[NSString alloc]之前。只要你有一個分配,你需要一個(自動)釋放。這不會泄漏:NSString * s = @「一些字符串」; s = [...]; – 2009-08-10 18:32:44
明白了。謝謝。 – farhadf 2009-08-12 16:15:44