我正在研究一個iPad(僅)應用程序,我偶然發現了一個奇怪的問題。該應用程序在iPad 1上發生內存警告後終止,但在iPad 2上正常工作。 我使用ARC並以iOS 5爲目標。我使用筆尖並使用UIImageViews顯示大多數資產。我還有幾百個按鈕和大量的手勢識別器......我重新觀看了ARC上的WWDC11視頻(會話323和322),我似乎沒有做任何特別的事情。ARC:內存不會被回收?
的應用程序是UIImage的密集,我做的很多使用UIImage的動畫。但是,我使用initWithContentsOfFile構造函數而不是imageNamed調用。我試圖阻止圖像被系統緩存。
我還使用GCD安排音效和動畫的看法。我總是在主線上做這件事。
應用程序使用的是從未有它的堆棧超過1個UIViewController的一個UINavigationController。我可以證實這是真的,因爲didReceiveMemoryWarning只在當前視圖控制器上被調用(我正在記錄該調用)。
我不明白的是爲什麼儀器在分配和VM跟蹤儀器二者的報告高數字(彷彿視圖控制器沒有得到解除了分配)。當我從一個視圖控制器導航到另一個視圖控制器時(這是我所期望的),Allocations儀器會顯示一個小滴,但VM跟蹤器樂器顯示當我執行同樣的操作時,髒大小沒有下降。最終,應用程序使用太多內存並終止(在iPad 1上)。當我在iPad 2上收到內存警告時,該應用程序不會終止,但...
感覺好像我的圖像,聲音或視圖不會被破壞,內存不會被回收...我的對象層次結構非常基本,不應該有任何形式的保留週期。我甚至沒有簡單的代表...
你有什麼建議嗎?我真的不想只爲iPad 2或更新版本發佈這個應用程序...這是一個適用於孩子的應用程序,這將是一個可憐的...我會很高興得知我做錯了什麼,因爲我真的想確保這個程序是它可以是最好的......
乾杯, 尼克
只是一個快速評論:我花了很多時間使用儀器搜索泄漏,但它看起來並不像有。另外,如果有的話,我會認爲iPad 2會崩潰並最終燒壞,但它不會...... – nicktmro 2012-02-22 06:25:43