UIWebView加载网页内存占用过高

在使用UIWebView去加载网页的时候,注意过的同学都会发现,内存占用瞬间暴增,并且在页面dealloc之后,内存仍未释放,导致app占用内存过大。查阅资料,发现是因为HTML里的js导致了内存泄漏,每次打开一个链接就会把“WebKitCacheModelPreferenceKey”设置为1。以下是个人尝试过的解决方案:

1、如果工程需要兼容到iOS8.0之前,webview遵循代理,并在代理方法中做如下处理:

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
[[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@”WebKitCacheModelPreferenceKey”];  // clear 一下UIWebView的NSURLCache

在使用这个方法的时候,虽然内存没有像之前那样暴增,但相对也并没有达到预期的效果,后来尝试了方法2,非常完美的解决了内存的问题。

2、如果工程是兼容到iOS8.0及以后的,建议使用WKWebView,具体形式如下:

首先导入#import <WebKit/WebKit.h>

初始化WKWebView,并遵循代理navigationDelegate

- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation {

    

    [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"WebKitCacheModelPreferenceKey"];

    [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"WebKitDiskImageCacheEnabled"];

    [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"WebKitOfflineWebApplicationCacheEnabled"];

    [[NSUserDefaults standardUserDefaults] synchronize];

}

在使用WKWebView的时候,完美的解决了问题,在加载网页的时候几乎没有大的内存变化,页面退出之后,内存也顺利释放,perfect。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值