2010-02-02 191 views

回答

3

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

+0

感谢您的建议Diederik – RAGOpoR 2010-02-02 17:09:10

+0

cound你笑我举一些例子来清除缓存? – RAGOpoR 2010-02-02 17:33:54

+1

[[NSURLCache sharedURLCache] removeAllCachedResponses]; – diederikh 2010-02-02 19:03:41

1

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

在你释放它之后,它的保留数是多少?

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

如果这个数字不为0,其他人被保留它,以及它不能被释放,直到他们释放它太(或者它设置为自动释放,因此将在未来的某个时候消失)。

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

山姆

PS我假设你也做[myWebView removeFromSuperview]; - 添加自己的视图将保留你。

+0

感谢您的建议deanWombourne – RAGOpoR 2010-02-02 17:09:33

+1

@ Retina的“Retaincount is useless”http://www.friday.com/bbum/2011/12/18/retaincount-is-useless/ – 2012-01-06 19:28:48

+0

@bbum同意 - 我只是希望当我回答这个问题时,我已经足够了解这个问题,在顶部加上一个大胆的声明! – deanWombourne 2012-01-07 20:43:46

0

有一些技巧(检查original post为其他人),可能有助于发布一个UIWebView时尽可能多的内存。不幸的是,他们从来没有达到完全释放的内存。通常对我来说更好的方法是在发布之前清空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]; 

这将清除所有的URLRequest(包括UIWebView的内部完成的那些)所使用的应用程序的sharedURLCache。