我正在尝试发布UIWebView对象,但它没有释放内存。 它有什么原因吗?
答案 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内完成的)。