关于UIWebView内存不足的问题

最近做的demo,设计到电子书展示的部分,我的电子书是epub3.0的模式,设计到html的加载,由于3.0后html中可以加载很多资源,致使一个html网页非常的大。我的一个webView的高度最高可以有16000多像素,我的demo是两个webView循环加载。致使内存占有量很大。运行时发现总是内存不足而崩溃。在网上搜索的很久,发现webView的加载的数据是无法被真正释放的,也就是说当webView调用release时,内存其实没有被释放掉。

现在大家比较管用的方法是在 - (void)applicationDidReceiveMemoryWarning:(UIApplication*)application;

这个方法中添加     [[NSURLCache sharedURLCache] removeAllCachedResponses]; 对缓存进行清除,

并在释放webView时填下如下的代码:

_webView.delegate = nil;
[_webView loadHTMLString:@"" baseURL:nil];
[_webView stopLoading];
[_webView removeFromSuperview];
[[NSURLCache sharedURLCache] removeAllCachedResponses];
[_webView release];

但是效果甚微。

我从一篇技术博客上看到,在调用JS代码时,会出现一个内存泄露,会将WebKitCacheModelPreferenceKey这个属性置成1;

我的demo中通过JS实现很多OC 和HTML的双向交互,所以JS调用很频繁。

所以要在JS调用结束后 调用,

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

 [[NSUserDefaults standardUserDefaults] synchronize];

这个方法。

同时主要在频繁调用webView 的loadRequest的方法时,请先调用下stopLoading


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值