我有一個iPad應用程序在iPad上崩潰(第一個模型),因爲它內存不足。真正的內存不斷增加 - 從視圖中刪除子視圖 - iOS(ARC)
在應用程序中,我有一個主視圖,其中添加了20 UIScrollViews
(自定義類)的子視圖,每個視圖都包含UIImageView
和UIImage
。當用戶移動到下一頁時,我從超級視圖中刪除所有這些子視圖,然後將20個新的UIScrollViews
添加到同一視圖。
如果我剖析應用程序的分配和內存泄漏,一切正常 - 分配的內存保持在2MB左右,而用戶左右滾動。
但是,如果我看一下活動監視器中真正的內存使用情況,我可以看到每當用戶移動到新頁面時,實際內存就會增加大約20MB。最終在幾個新頁面後,應用程序大小達到150多MB並崩潰。
任何人都可以提出什麼可能會導致這種類型的行爲,以及如何進一步排除故障?上的應用程序結構的更多
只是有點信息:
- 鑑於沒有加載圖像使用
initWithContentsOfFile
裝入NSMutableArray
。
這一切都發生在相同的UIView。這些對象被添加到視圖中,被刪除,然後添加新的(在這種情況下是一個自定義的UIScrollView)對象。我仍然不清楚我的原始問題 - 爲什麼只有在新對象添加到視圖(通過self.view addSubview x)時,真實內存纔會增加?這些對象被放置在viewDidLoad方法的數組中,並且實際內存在此時不會增加(它很低且不變)。 – GuybrushThreepwood 2013-04-27 17:00:01
@Ohnomycoco在這種情況下,我們可能需要查看一些源代碼來診斷問題。但顯然,當你進入下一頁時,你正在添加一些東西。根據目前共享的內容進行診斷是不可能的。 – Rob 2013-04-27 17:11:41
@Onomycoco您也可以使用Allocations工具(如[此處](http://stackoverflow.com/a/14105056/1271826)所示)來確定分配中的跳轉,突出顯示圖表的一部分,並顯示你正是什麼導致了內存的消耗。 – Rob 2013-04-27 18:41:47