WKWebView崩溃问题解决方案

截图代码如下:

WKWebView崩溃问题解决方案_第1张图片
崩溃问题出现在上面标注的地方。

小Tips:

为了获取一些堆栈信息以便于快准狠的定位问题,可以在main函数里:

WKWebView崩溃问题解决方案_第2张图片

最终得到一条关键报错:

意思就是WKWebView的这个代理方法被多次调用了。
WKWebView崩溃问题解决方案_第3张图片

简单分析一下被多次调用的原因:

1、系统判断这个方法被多次执行,主要是看decisionHandler()是否被多次执行;

2、由于if判断里会执行decisionHandler(),最后一行代码也会执行decisionHandler(),并且self.realDelegate中也会执行decisionHandler(),这就导致了decisionHandler()这个handler可能会被多次执行。

那解决问题的方向就是修改代码保证WKWebView单次LoadRequest只调一次此代理方法~

修改如下:

WKWebView崩溃问题解决方案_第4张图片
即保证了单次LoadRequest只执行一次decisionHandler()

你可能感兴趣的:(WKWebView崩溃问题解决方案)