1

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

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

Received memory warning. Level=1

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

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

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

谢谢!

4

1 回答 1

3

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

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

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

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

于 2011-08-25T13:44:24.960 回答