iOS UIWebView调用JS的释放内存坑

作者: 燃烧的大叔 | 来源:发表于2015-09-24 18:19 被阅读8790次

我们项目涉及到UIWebView和JS互相调用的小游戏,小游戏里面是有声音的。

我们的工程是ARC模式,我们在ARC模式中在退出UIWebView的时候进行了以下操作

代码

并且把_gameWebView = nil了   我们测试是消除了,但是返回上层页面,JS的音频还在播放。

为什么已经消除了,还在播放,难道还在内存里面吗?

我们分享到微信里面,发现退出之后不在播放了。

哎呦,内存内存内存,是谁占用了,UIWebView已经消除了啊。为什么。。。

然后注意到了这边博文UIWebView使用中的内存相关问题

原来是JS的问题。

之后又加上了

附图

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

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

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

[[NSUserDefaults standardUserDefaults] synchronize];

之后再试还是没有,不是说已经消除了吗。

我们有吧ARC改成MRC,对对象进行自己消除,打印retainCount确实为0了。返回音频不播放了。真个人都OK了。仔细查了资料iOS4之后就出现了这个问题,之后iOS8出现了WKWebView。为了兼容iOS8.0一下还的用WKWebView真是够了。现在iOS9出来了,很多人都出现了多多少少的BUG。好多的库也出现了崩溃现象。所以以后开发最好是能用自己的库就用自己的不会被第三方牵着鼻子走。

顺便祝大家中秋快乐,十一快乐,最主要的是编码愉快。

相关文章

网友评论

  • 848e33812d39:删除不如替换啊,或者让js去优化
  • 圣僧留步:我在js调用oc摄像头拍照,然后本地上传服务器,然后oc再调用js,来回的不断上传图片的过程中发生了内存泄露然后崩溃了,每次上传七八张图片后就崩溃了。现在也是没有找打解决方案。
    超_iOS:1年过去了,请问您有什么心得么?
  • 职场喵小喵:open _blank
  • 招牌猪:楼主解决了吗? 我也遇到这个问题了
  • __sev7:不是缓存问题,找个我测过了
    Sherlock24:@__sev7 你好 请问这个问题你现在解决了吗 ?
  • __sev7:然后是怎么解决的这个问题
    燃烧的大叔:@__sev7 很多人说是JS的原因,我也是不懂JS什么的。但是最大的就是webview和http缓存之类的需要清除的原因。我那就一个类用了MRC,其他的还是ARC。
    __sev7:
    我现在项目很大 MRC的话太费工作量了。 一些音乐不停止播放的问题 实在是很困惑,虽然在pop的时blank的方式 可以解决 但是这个问题 的原因是什么 始终找不到
    燃烧的大叔:@__sev7 我是自己把这个单独的类MRC了,手动释放,确认在dealloc里面确认returncount为0

本文标题:iOS UIWebView调用JS的释放内存坑

本文链接:https://www.haomeiwen.com/subject/boaicttx.html