2011-12-21 65 views
0

我發現(比如)UIPickerView之類的UI對象經常被分配和釋放,甚至調用相應的dealloc方法(通過使用Instruments來證明),堆仍然會長大。iOS - 有沒有辦法觸發內存清理?

有沒有辦法觸發優化autorelease池來改善整個場景?

我的應用程序需要拍照,管理照片並上傳到服務器。過了一段時間,Heap變大,最終崩潰了我的應用程序。 **我檢查了沒有明顯的內存泄漏*使用儀器。

任何幫助或建議?

謝謝。

+0

您目前正在使用ARC嗎? – 2011-12-21 02:47:41

+0

嘗試使用ARC功能。 Xcode中有折射器菜單可將舊版本轉換爲ARC環境。 – Sakares 2011-12-21 07:51:00

回答

0

您可以在對您的應用程序有意義的地方創建自己的自動釋放池。以下創建自動釋放池的方式適用於或不適用ARC。

// Stuff you plan to keep around after finishing the block below 
@autoreleasepool { 
    // Load an image, send to server 
} 
// The images are released 

這聽起來像是需要一些時間讓你的記憶失去控制。如果你在主UI運行循環中做你的工作,你應該定期發生autorelease,所以我不確定另一個autorelease池會對你有幫助。也許你保持你的引用的方式,他們不被釋放,因爲他們仍然可以使用。由於不會從數組,集合和字典中刪除對象,因此會發生許多泄漏。

相關問題