【问题标题】:Growing UIWebView causing "Received memory warning." and eventually crashes app with "Terminated due to Memory Error"不断增长的 UIWebView 导致“收到内存警告”。并最终导致应用程序因“因内存错误而终止”而崩溃
【发布时间】:2015-05-06 16:45:38
【问题描述】:

所以我在 UINavigationController 中有一个 UIWebView,它位于 UITabBarController 中,UIWebView 基本上构成了整个视图。

在 UIWebView 内,我正在显示来自网络服务器的内容,当您向下滚动并到达底部时,该服务器的高度会增加。过了一会儿,我开始收到内存警告,再滚动几次后,最终整个应用程序崩溃并显示错误消息Terminated due to Memory Error

但是,我仔细监控了应用程序的内存使用情况,找不到任何表明应用程序填满内存或类似情况的信息。

当我收到警告时,我还记录了 Web 视图滚动视图的内容大小,高度从 30 000 到 60 000 不等,直到我收到第一个警告。我也试过在没有任何图像元素的情况下运行 HTML 内容,没有任何明显的区别。

那么,我错过了什么? 内存是否以某种方式被填满,导致应用崩溃?

关于调试工具/方法的任何建议我可以尝试吗?

欢迎所有提示!

【问题讨论】:

    标签: ios objective-c iphone swift uiwebview


    【解决方案1】:

    尝试使用分页网页,您可以使用 NSURLProtocol 缓存页面数据。

    它会将页面和缓存加载到磁盘上,因此向后导航将从缓存中进行,并且只有 1 个页面会在正在查看的内存中。

    这是你可以用 UIWebView 做的最好的事情,或者你可以去 MKWebView 它可以为你提供额外的功能。

    【讨论】:

      猜你喜欢
      • 2012-01-16
      • 1970-01-01
      • 2019-11-19
      • 2013-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多