【问题标题】:iPhone: Leak with UIWebView loading Office documents. Any ideas how to avoid it?iPhone:UIWebView 加载 Office 文档时泄漏。任何想法如何避免它?
【发布时间】:2011-02-16 11:58:24
【问题描述】:

虽然已经有很多关于 UIWebView 泄漏的帖子,但我相信我的更特别,因此值得在这里单独发布。

每次我加载 Office 文档(如 Word 或 Excel 文件)时,我都会看到一个可重现的泄漏。

例如,每次我显示一个 180KB 的 .doc 文件时,我都会得到 100KB 的泄漏。模拟器和运行 OS 3.1.3 的实际设备都会发生这种情况。

泄漏是在 Leaks 工具中可见的,但只能通过 ObjectAlloc 工具查看 malloc 实例。

这是来自仪器跟踪的图片:


(来源:tempel.org

我还做了一个演示项目,UIWebView-Leak.zip,所以你可以自己验证。

要查看泄漏,请使用 ObjectAlloc 工具,切换到查看单个分配对象的视图,然后按大小排序,以便查看组中的大对象,就像我上面的图片一样。然后查看 Office 文档几次,找到即使在实际 UIWebView 已被释放后仍保持“活动”状态的 Malloc 对象。

这是一个已知的错误吗?或者有什么办法可以避免这些泄漏?即,您是否已成功在 iPhone 上显示 Office 文档并出现此类泄漏?

注意:我现在也将此作为错误报告给 Apple (ID 7950594)

我仍在等待某人(包括 Apple)确认这是真正的泄漏或说明为什么不是(即我做错了什么或做出了错误的假设)

【问题讨论】:

    标签: iphone memory-leaks uiwebview


    【解决方案1】:

    这是一个可能对您有用的解决方法(仅使用 PDF 文件测试):

    尝试添加

    [webView loadHTMLString: @"" baseURL: nil];
    

    就在你发布 webview 之前。对于 4.2.1 中与在 UIWebView 中显示 PDF 相关的泄漏

    【讨论】:

    • 我相信 PDF 文件从来没有这样的泄漏。我进行了广泛的测试。
    • 好吧,我们在 4.2.1 中遇到了与 PDF 文件非常相似的泄漏,我们刚刚使用上述建议解决了这个问题。我想可能是一个新问题。
    • 感谢您的信息,我会试试看。
    【解决方案2】:

    事实证明这是一个真正的错误。 Apple 刚刚告诉我,他们已经在即将发布的 iPhone OS 版本中修复了它。 没有解决方法。

    【讨论】:

      猜你喜欢
      • 2020-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-14
      • 2015-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多