我的项目是一个混合静态库,用于显示带有一些JS来控制逻辑的UIWebView。当我使用64bit并在iOS 8/iPhone 6上运行演示时,内存不断增加到30M或更多!
我使用以下代码。
-(void)createUIWebview{
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:serviceUrl]]];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"WebKitCacheModelPreferenceKey"];
}
-(void)dealloc{
if (_webView.isLoading){
[_webView stopLoading];
}
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];
_webView.delegate=nil;
[_webView removeFromSuperview];
[_webView release];
_webView = nil;
}
我研究了以下链接,但它们似乎无法解决我的问题。
UIWebview是否仍在iOS 8中泄漏?当我在iPhone4中使用iOS 6时,问题似乎不太明显。
Whats the proper way to release a UIWebView?
iOS 8 UIWebView memory management
UIWebView leaks, JS Garbage Collector & WebCore VMs
Release memory/cookie/cache from UIWebView once closed
最佳答案
我遇到了同样的问题,并切换到新的WKWebView
,它立即解决了我所看到的所有内存泄漏问题。 WKWebView
与UIWebView
共享许多相同的调用名称,因此我在项目上要做的就是将所有的“UIWebView”对象切换到“WKWebView”,并且内存泄漏消失了。
请记住将WebKit
导入到您的项目中,并且知道该功能仅在iOS8
上可用。
Apple Documentation