iOS UIWebView调用JS代码的内存坑

转载自 燃烧的大叔

我们项目涉及到UIWebView和JS 互掉的小游戏,小游戏里面是由声音的。

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

_gameWebView.delegate = nil;

NSURL *url = [NSURL alloc] initWithString:@""];

NSURLRequest *request = [NSURLRequest requestWithURL:url];

[_gameWebView loadRequest:request];

[_gameWebView stopLoading];

[_gameWebView removeFromSuperView];

NSHTTPCookie *cook;

NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];

for (cookie in [storage cookies]){

      [storage delegateCookie:cookie];

}

[[NSURLCache sharedURLCache ] removeFromCachedResponses];    

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

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

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

UIWebView使用中的内存相关问题

原来是 JS的问题

后来又加上了

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

[[NSUserDefaultes standardUserDefaults] setBool:NO forKey:"WebKitDiskImageCacheEnabled"];

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

[NSUserDefaults standardUserDefaules] synchronize];

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

我们有把 ARC改成MRC,对对象进行自己消除,打印retainCount确实为0了。返回音频不播放了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容