UIwebview返回crash的问题

2018-01-30  本文已影响11人  revivefsd
  最近在做项目的时候发现一个偶现的闪退,就是在反复去打开h5页面,再返回到原声页面的时候,如果反复操作,就会发生crash,而且无法定位问题,崩溃到main函数,很难查看原因。
   最后我想问题可能是,webview关闭之后,一些js和原生交互的异步的回调方法回来之后web已经不存在了,delegate也不存在,给已经释放的地址去发送消息,造成了crash。也可能是其他原因。
   我在返回到原生页面时候做了一些处理,现在已经解决了这个问题。

代码如下:

-(void)JDReleaseWebView
{
   if (_webView && _webView.loading){
       [_webView stopLoading];
   }
   _webView.delegate=nil;
   _JDRelease = YES;
   
   NSURL *url = [NSURL URLWithString:@""];
   NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
   [_webView loadRequest:requestObj];
   _webView = nil;
   [self.navigationController popViewControllerAnimated:YES];
}

首先在web返回到原生页面的时候, [_webView stopLoading]; _webView.delegate=nil; 添加这两行,然后再让web去加载一个空的url,这样就基本清空了之前的url在执行的很多异步操作,不会去向一个已经释放的对象发送回调的消息。

上一篇下一篇

猜你喜欢

热点阅读