【问题标题】:Prevent UIWebView allocating to much memory防止 UIWebView 分配大量内存
【发布时间】:2011-11-03 12:09:22
【问题描述】:

我遇到了 UIWebView 的问题。我正在使用此组件在 iPad/iPhone 上加载普通网页。 UIWebView 呈现在 modalViewController 中。有些页面非常占用内存,有些页面还包含 Flash 内容。

问题是有时在某些页面上我会收到内存警告

Received memory warning. Level=1

当这种情况发生时,当我关闭这个 modalViewController(在 webView 中加载页面)时,前一个视图会自动重新加载自身 - 再次触发 viewDidLoad 方法。

我怀疑 UIWebView 中的某些页面消耗了大量内存,应用程序释放其视图的内存,但不会崩溃。

有没有办法限制 webView 的内存消耗或者有没有其他方法可以避免这个内存警告?

谢谢!

【问题讨论】:

    标签: ios memory uiwebview viewdidload memory-warning


    【解决方案1】:

    您几乎无法控制UIWebView 对象的内存使用情况。您也几乎无法控制整个系统内存使用情况。所以没有办法避免内存警告。 iOS 期望您的应用程序在收到内存警告时能够正常运行,因此应编写 viewDidLoad 方法来处理内存警告后的重新运行。

    您可以限制UIWebView 的内存使用的唯一方法是让它查看简单的网页。从您的问题看来,这不是一个选择。

    编辑: viewDidUnload 在内存不足的情况下被调用。此方法有望释放任何易于在 viewDidLoad 方法中重新创建的内容。当这个视图返回屏幕时,不要释放你想要显示给用户的状态信息。然后在您的 viewDidLoad 方法中检查您创建的所有对象。如果它们是nil,它们需要被初始化,否则这不是你的viewDidLoad 方法第一次被调用,你不应该再次初始化你的对象。

    换句话说:viewDidUnload 处理内存不足的情况,viewDidLoad 不应假定它只运行一次。

    【讨论】:

    • 感谢您的解释。但是如何处理 viewDidLoad 中的内存警告?
    猜你喜欢
    • 2013-02-22
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多