问题描述
在iOS9及以下版本中,WKWebView
在自定义了他的scrollView.delegate
为当前ViewController
时,如果退出当前ViewController
会闪退。提醒EXC_BAD_ACCESS
错误并且闪退,
错误堆栈是-[UIScrollView(AdhocVisualEdit) adhoc_scrollViewSetDelegate:]
上一级是-[WKScrollView _updateDelegate]
。
原因分析
考虑是在iOS9及以下版本中,苹果对于delegate
的weak
的处理没有如预期。导致在退出当前ViewController
的时候更新scrollView
的delegate
还是使用了已经释放的ViewController
,从而导致EXC_BAD_ACCESS
错误而闪退。
这个问题在iOS10及以上版本中已经修复,不再闪退。
解决办法
在当前ViewController
释放的时候,设置WKWebView
的scrollView.delegate
为nil。
代码如下:
1 | // Objective-C |