【问题标题】:iOS - Is there a way to trigger the memory cleaning?iOS - 有没有办法触发内存清理?
【发布时间】:2011-12-21 00:24:05
【问题描述】:

我发现(例如)一个UI对象,比如UIPickerView,被频繁分配和释放,即使调用了对应的dealloc方法(使用Instruments证明),Heap还是变大了。

有没有办法触发自动释放池的优化来改善整个场景?

我的应用程序需要拍照、管理照片并上传到服务器。随着时间的推移,堆变大,最后它使我的应用程序崩溃。 ** 使用 Instruments 检查没有明显的内存泄漏*

有什么帮助或建议吗?

谢谢。

【问题讨论】:

  • 尝试使用 ARC 功能。 Xcode 中有 refractor 菜单,可以将您的旧样式转换为 ARC 环境。

标签: iphone ios4 ios5


【解决方案1】:

您可以在对您的应用程序有意义的地方创建自己的自动释放池。以下创建自动释放池的方法可以使用或不使用 ARC。

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

听起来你的记忆需要一些时间才能失控。如果您在主 UI 运行循环中进行工作,您应该非常定期地进行自动释放,所以我不确定另一个自动释放池是否会帮助您。也许您保留引用的方式是因为它们仍然可以使用,所以它们不会被发布。许多泄漏的发生是因为没有从数组、集合和字典中删除对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    相关资源
    最近更新 更多