我们项目涉及到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。好多的库也出现了崩溃现象。所以以后开发最好是能用自己的库就用自己的不会被第三方牵着鼻子走。
顺便祝大家中秋快乐,十一快乐,最主要的是编码愉快。