加载webView导致内存泄露的原因是:Html中的js代码会引起内存泄露
解决这个问题的方法是在webViewDidFinishLoad方法中设置如下:
***************
[[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"WebKitCacheModelPreferenceKey"];
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"WebKitDiskImageCacheEnabled"];//自己添加的,原文没有提到。
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"WebKitOfflineWebApplicationCacheEnabled"];//自己添加的,原文没有提到。
[[NSUserDefaults standardUserDefaults] synchronize];
***************
或者你可以使用wkwebView
优点: 加载速度 比UIWebView提升差不多一倍的, 内存使用上面,反而还少了一半。
缺点: WKWebView 不支持缓存 和 NSURLProtocol 拦截了
我建议如果对缓存不高的页面可以使用,用户体验会提高很多。
本文探讨了webView加载导致内存泄露的问题,主要原因是Html中的js代码。为解决此问题,可以在webViewDidFinishLoad中设置WebKit相关偏好,如禁用缓存。此外,考虑使用wkwebView,虽然它不支持缓存且不兼容NSURLProtocol,但其加载速度更快,内存占用减半。对于对缓存需求不高的页面,使用wkwebView能显著提升用户体验。
810

被折叠的 条评论
为什么被折叠?



