2011-05-30 90 views

回答

3

你會發現,當您運行與泄漏演示在viewDidLoad(負責框架)有泄漏。如果切換到Call Tree細節,如果你有啓用Invert Call Tree,你會看到與呼叫+[NSArray new]相關的泄漏。如果您打開一點,你會看到initWithArray這就是所謂的RootViewControllerviewDidLoad。問題位,

self.eventsList = [[NSMutableArray alloc] initWithArray:0]; 

eventsListretain ED屬性,以便創建該對象具有2的保留計數然而它只是releaseð一次或者通過releasedealloc或通過eventsList重新分配。你必須自動釋放這個對象。

self.eventsList = [[[NSMutableArray alloc] initWithArray:0] autorelease]; 

修好後,你不應該得到任何錯誤。

+0

哦 - 所以你的意思是,如果你有「保留」的屬性,那麼你要小心,以通過創建「黃金」爲它的變量,因爲它有效地意味着兩(2)保留計數不是一(1)?那是對的嗎? (如果是的話 - 那麼我已經學到了一個很好的教訓,但我沒有意識到這一點) – Greg 2011-05-30 06:06:08

+0

'alloc'創建一個保留計數爲1的實例,但是對'retain'屬性的賦值給實例添加了一個'retain'調用使保留計數2. – 2011-05-30 06:10:09

+0

好的謝謝 - 我想我必須在此基礎上查看整個代碼堆:) – Greg 2011-05-30 06:12:12