2010-02-02 90 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。