Create a gist now

Instantly share code, notes, and snippets.

How to properly remove an instance of UIWebView and avoid memory leaks
// Destroy UIWebView
- (void)destroyWebView
{
[self.webView loadHTMLString:@"" baseURL:nil];
[self.webView stopLoading];
[self.webView setDelegate:nil];
[self.webView removeFromSuperview];
[self setWebView:nil];
[[NSURLCache sharedURLCache] removeAllCachedResponses];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
[[NSURLCache sharedURLCache] setMemoryCapacity:0];
}
// UIWebViewDelegate Methods
- (void) webViewDidFinishLoad:(UIWebView *)webView
{
[[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"WebKitCacheModelPreferenceKey"];
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
return YES;
}
@capripot

Is it still the case ?
Why do you use webView:shouldStartLoadWithRequest:navigationType: ?

@Mr-Mojo-Risin

It does not work very well.

@sealedace

Not work for me.

@ArtSabintsev
Owner

I have no idea if this works anymore. I put this solution together in early 2013, from a project I worked on in 2012.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment