WKWebView在deinit上崩溃了

sha*_*oga 12 crash swift wkwebview

我有这个层次结构--UIViewController - > ChildUIViewController - > WKWebView.

我遇到了WKWebView消息处理程序的问题,该处理程序泄漏并阻止子视图控制器被释放.

经过一些阅读后,我发现了一种通过使用此修复来修复保留周期的方法 - WKWebView导致我的视​​图控制器泄漏

现在我可以看到子视图控制器正在到达,deinit但在此之后WKWebView正在崩溃deinit(没有来自Xcode的有用日志).

任何想法或方向可能是什么问题?

谢谢

更新 这里是我的代码 - Code Gist

Prc*_*ela 10

把它放在子视图控制器的 deinit方法中:

webView.scrollView.delegate = nil
Run Code Online (Sandbox Code Playgroud)


Tim*_*ich 7

不要忘记删除您添加的WKWebView的委托:

deinit {
    webView.navigationDelegate = nil
    webView.scrollView.delegate = nil
}
Run Code Online (Sandbox Code Playgroud)

看起来WKWebView存储__unsafe_unretained指向您的委托的指针。有时,当Web视图解除分配后,视图控制器解除分配后不会立即生效。当Web视图试图通知委托某些内容时,这会导致崩溃。