2009-08-10 78 views
0
-(id)viewWillDisappear:(BOOL)animated 
{ 
report_memory_str(@"BEFORE RELEASE viewWillDisappear"); 
self.view = nil; 
report_memory_str(@"AFTER RELEASE viewWillDisappear"); 
} 

當我的視線中消失,我嘗試推之前釋放當前視圖到另一個控制器, 我沒有得到更多的可用內存,爲什麼呢?如何獲得更多的空閒內存?iPhone - 釋放視圖,並沒有更多的可用內存

2009-08-10 09:51:31.263 App[4622:207] BEFORE RELEASE viewWillDisappear -- Memory in use (in bytes): 7880704 
2009-08-10 09:51:31.280 App[4622:207] AFTER RELEASE viewWillDisappear -- Memory in use (in bytes): 7884800 

回答

0

只是因爲你調用了release,並不表示這個對象已經被釋放了。如果保留計數爲0,則標記爲釋放。也許在你試圖釋放的對象的dealloc上放一個斷點,看看它是在內存檢查之前還是之後被調用。

0

我會釋放viewDidDisappear:,而不是viewWillDisappear:的看法。如果更改是動態的,則在刪除之前需要查看該視圖。我不確定超級視圖是否保留併發布了子視圖,但這可能是原因,爲什麼當視圖仍處於視圖層次結構中時,視圖並未立即被刪除。

你可以嘗試

  • 幾秒鐘後,檢查所使用的內存。
  • 使用泄漏性能工具運行以查看對象是釋放還是泄漏。
  • 檢查您確實是在其訪問器方法中釋放視圖。
+0

最好使用viewDidDisappear而不是viewWillDisappear! 記憶它後來更高,因爲我在新的控制器上加載了很多東西。 沒有泄漏。 – NicoMinsk 2009-08-12 14:05:50