iOS:WebKitLegacy崩溃

Div*_*ion 9 crash webkit ios

在一些相对安全(对我来说)修改后,应用程序开始崩溃一些WebKitLegacy的东西.我看到Fabric中发生了很多崩溃,但找不到稳定的重现步骤.有谁知道什么会导致这些崩溃?请参阅附图.

一些应用程序屏幕使用UIWebView显示内容 - 我认为问题出在那里.

在此输入图像描述 在此输入图像描述

Bar*_*erk 1

据我记得,当 Webview 收到更新(例如,来自嵌入图像的响应)时,该信号会弹出,但无法渲染,因为它不再被主线程使用。这意味着,当 ViewController 没有显示时。

如果是这种情况,您应该能够通过加载内容较多的网页(例如,一些在线报纸,如http://edition.cnn.com/)并在开始加载后立即关闭 webview 来重现该问题,通过推送/弹出另一个 ViewController。

如何修复它:确实,您需要调用您提到的方法:

webview.delegate = nil;
[webview stopLoading];
Run Code Online (Sandbox Code Playgroud)

然而,这样做的地方是在viewWillDisappear方法上,而不是在dealloc. 原因很简单:viewWillDisappear在 ViewController 即将失去对主线程的控制的确切时刻调用。然而,dealloc当 VC 即将释放到堆时被调用。这可能会在几秒钟后发生,给应用程序一些宝贵的时间来崩溃,或者可能永远不会被调用。将这两种方法移到那里应该可以解决问题。