2011-12-21 64 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池会对你有帮助。也许你保持你的引用的方式,他们不被释放,因为他们仍然可以使用。由于不会从数组,集合和字典中删除对象,因此会发生许多泄漏。

相关问题