iOS 9 WKWebView 设置UIScrollViewDelegate崩溃问题

问题描述

系统要求: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;

你可能感兴趣的:(iOS 9 WKWebView 设置UIScrollViewDelegate崩溃问题)