0

我正在开发一个大量使用多个 UIWebViews 的 iOS 应用程序。所有请求都是从应用程序包中的本地 html 文件加载的。我在这里找到了尝试防止内存泄漏的绝妙技巧:http: //www.codercowboy.com/code-uiwebview-memory-leak-prevention

我要做的是创建一个包含 3 个 UIWebView 实例的池的工厂类,并且任何时候请求 UIWebView 时,它都应该从该池中请求一个实例。因此,除非遇到内存警告,否则我将永远不会释放 WebViews,如果需要,我可能会释放 WebViews。

这是我到目前为止所想到的,并且正在寻找任何关于我的建议的额外提示或评论。

  1. 一旦池已满,就必须重用 WebView。它将是先进先出类型的堆栈。
  2. 一旦请求重用 webview,它将执行 HTML 实现中定义的 destroy 方法以清空全局变量。这可以使用 UIWebView 的 stringByEvaluatingJavascriptFromString 来完成
  3. 完成后,WebView 将执行 document.innerHTML = ""; 清除文档。
  4. 然后重用的 UIWebView 将加载新的请求。
  5. 听说使用多张图片会占用大量内存。当池中的 UIWebView 不在屏幕上时,用小图像替换所有标签源是否有益?

在这里感谢任何输入!

谢谢,弗格尔。

4

2 回答 2

1

不再使用loadHTMLFromString或loadRequest重新加载内容,而是继续使用stringByEvaluatingJavascriptFromString将具有特定ID的部分的innerHTML设置为您想要的内容,全部通过javascript,不会占用大量内存

于 2013-09-16T20:56:28.517 回答
0

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

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

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

于 2015-03-05T12:58:44.083 回答