是否可以释放UIWebView的内存?

时间:2010-02-02 14:25:37

标签: iphone memory-management uiwebview

我正在尝试发布UIWebView对象,但它没有释放内存。 它有什么原因吗?

3 个答案:

答案 0 :(得分:3)

也许清除缓存可能有帮助吗?见NSURLCache class。

答案 1 :(得分:1)

仅仅因为你发布它并不意味着它可以被释放 - 也许它被其他东西使用了?

释放后它的保留计数是多少?

[myWebView release];
NSLog(@"%i", [myWebView retainCount]);

如果这个数字不是0,那么其他人也会保留它,并且在它们释放它之前不能被释放(或者它被设置为自动释放,因此它将来会在某个时候消失)。

另一种可能性是使用的内存是在创建Web视图时加载的某种共享库 - 您可能无法控制如何卸载它。

萨姆

PS我假设您已完成[myWebView removeFromSuperview]; - 将自己添加到视图中会保留您的信息。

答案 2 :(得分:0)

在发布UIWebView时,有一些技巧(对其他一些检查original post)可能有助于清理尽可能多的内存。不幸的是,它们永远无法完全释放所使用的内存。通常对我来说效果更好的是在发布之前清空WebView的HTML文档。

// Empty the HTML document. This hack free some additional memory
[webview stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML='';"];

但是我从未完全发布Web组件使用的内存:(

此外,如果您也想清除URLcache,可以尝试通过此调用清除它:

// remove all cached responses
[[NSURLCache sharedURLCache] removeAllCachedResponses];

这将清除App用于任何URLRequest的sharedURLCache(包括在UIWebView内完成的)。