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了。返回音频不播放了。

你可能感兴趣的:(iOS UIWebView调用JS代码的内存坑)