UIWebView内存管理技巧

时间:2012-08-02 13:55:39

标签: ios ipad memory-management uiwebview

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

我要做的是创建一个Factory类,它包含3个UIWebView实例的池,每当请求UIWebView时,它都应该从该池请求一个实例。所以我永远不会释放WebView,除非我遇到内存警告,如果需要我可以解除分配WebViews。

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

  1. 一旦池已满,就必须重用WebView。它将是先进先出类型的堆栈。
  2. 一旦请求重用webview,它将执行HTML实现中定义的destroy方法以使全局变量无效。这可以使用UIWebView的stringByEvaluatingJavascriptFromString
  3. 来完成
  4. 完成后,WebView将执行document.innerHTML =“”;清除文件。
  5. 重新使用的UIWebView将加载新请求。
  6. 我听说使用多个图像可以使用大量内存。当池中的UIWebView不在屏幕上时,用微小图像替换所有标签源是否有益?
  7. 在这里感谢任何输入!

    谢谢, Fergal。

2 个答案:

答案 0 :(得分:1)

不是使用loadHTMLFromString或loadRequest重新加载内容,而是继续使用stringByEvaluatingJavascriptFromString来设置具有所需内容的特定ID的部分的innerHTML,所有内容都通过javascript,不会占用大量内存

答案 1 :(得分:0)

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

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

最好用UIWebView做,或者你可以选择MKWebView,它可以让你有更多的功能。