[英]Iphone Memory Warning issues
我正在使用MapView和UIImagePicker創建一個應用程序。 我正在屏幕上顯示地圖,並隨着用戶的前進顯示路線。 用戶可以在兩者之間捕獲圖像。 我有兩個屏幕。
當我轉到屏幕1到屏幕2時,我顯示一個ImagePicker並允許用戶捕獲圖像。 當我跳回到屏幕1時,我release
所有對象並將其設置為nil
。 該任務通常在viewDidUnload
完成,但是我遇到了內存問題,因此當我的視圖控制器彈出時就完成了。 因此,當我完成所有對象的工作后,我的所有對象都會被釋放,並且沒有任何作用。
當我從地圖轉到登錄屏幕時,我正在做的事情我都知道:
nil
值。 當我通過性能分析運行該應用程序時,沒有運行時泄漏可用,但是即使在Activity Monitor中,我的應用程序的真實內存仍會不斷增加:(
捕獲10-12張圖像后,我將Received memory warning. Level=1
Received memory warning. Level=1
我什至沒有在內存中存儲UIImage對象。 我在文檔目錄中寫這個,只存儲字符串路徑。
請幫助我,並指導我解決該問題的其他方法。
更新
當釋放后退按鈕上的對象時,我正在使用:
- (void)releaseObjects {
[mapViewNewTour setDelegate:nil];
[mapViewNewTour removeFromSuperView];
[mapViewNewTour release];
mapViewNewTour = nil;
[lblNavTitle release];
lblNavTitle = nil;
[btnEdit release];
btnEdit = nil;
[txtTourName release];
txtTourName = nil;
[vwTourName release];
vwTourName = nil;
[mutDictOfflineSharing release];
mutDictOfflineSharing = nil;
[mutArrImage release];
mutArrImage = nil;
[_routeLine release];
_routeLine = nil;
[_routeLineView release];
_routeLineView = nil;
[aLazyLoader release];
}
ARC在4.3上也受支持,因此請使用它。
您使用專用的“ releaseEverything”方法的方法被徹底破壞了-它表明缺乏所有權跟蹤,並且充其量是一種黑客。
無論如何, viewDidUnload
現在已被棄用,iOS 6中的系統不會調用它(您應針對此構建)。
不要與框架作斗爭-以“正確”的方式來做。
我建議您運行儀器並查看使用內存的位置。 有用於內存使用情況分析的特定工具。 您將需要的工具是“活動監視器”和“ VM跟蹤器”。
另外,我建議您再次檢查您是否未在使用NSZombieEnabled運行(請在方案中檢查它),因為它將導致內存警告。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.