问题描述
系统要求:iOS 9.x 及之前版本
设备要求:无
问题详情:使用WKWebView时,设置了scrollView的delegate,但是在关闭页面时没有设回nil,在webView的dealloc时就会崩溃。
_webView.scrollView.delegate = self;
崩溃日志
问题关键堆栈信息
- [UIScrollView setDelegate:] + 40
- [WKScrollView _updateDelegate] + 228
- [WKWebView dealloc] + 216
原因分析
WebKit的bug,因为时iOS 9 及之前版本,初步估计是苹果对于delegate
的处理没有达到weak
的预期情况,导致在退出当前ViewController
的时候更新webView的delegate
,还是使用了已经释放的ViewController
。
在iOS 10苹果已经把问题修复了。
解决方案
在页面关闭时,或者页面dealloc时,把scrollView的delegate设回nil。
_webView.scrollView.delegate = nil;