Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Clear UIWebView content upon dismissal of modal view (iPhone OS 3.0)

Tags:

I currently have a UIWebView that is displayed within a modal view. It is basically a detail view that provides a view of a page when the user clicks a link. When the view is dismissed and then brought up again (when the user clicks another link), the previously-loaded content is still visible and the new content loads "on top" of the last content. This makes sense because the instance of the UIWebView persists between sessions and is only released when the memory is needed.

However, I would like to completely clear the UIWebView when the modal view is dismissed so that 1) content is cleared and 2) memory is freed. Thus far my research and attempts have not found an answer. These links haven't worked for me:

  1. is it possible to free memory of UIWebView?
  2. Reused UIWebView showing previous loaded content for a brief second on iPhone

I've tried [[NSURLCache sharedURLCache] removeAllCachedResponses]; and setting the webView to nil and manually releasing the webView upon modal-view-dismiss to no avail. Any thoughts from the wizened masses?

like image 391
Ricky Avatar asked May 29 '10 00:05

Ricky


2 Answers

Sometimes loadHTMLString is too slow. You also can use:

[webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML = \"\";"]; 

I'm not sure if that will free up much memory though...

like image 151
rob Avatar answered Oct 18 '22 15:10

rob


Releasing the web view is probably the best approach. If a view is in a view hierarchy (has a superview) you must call removeFromSuperview to get the superview to release the view.

You could also load an html string for an empty document:

[webView loadHTMLString:@"<html><head></head><body></body></html>" baseURL:nil]; 
like image 29
drawnonward Avatar answered Oct 18 '22 15:10

drawnonward