问题描述
在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 |