在一些相对安全(对我来说)修改后,应用程序开始崩溃一些WebKitLegacy的东西.我看到Fabric中发生了很多崩溃,但找不到稳定的重现步骤.有谁知道什么会导致这些崩溃?请参阅附图.
一些应用程序屏幕使用UIWebView显示内容 - 我认为问题出在那里.
据我记得,当 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 即将释放到堆时被调用。这可能会在几秒钟后发生,给应用程序一些宝贵的时间来崩溃,或者可能永远不会被调用。将这两种方法移到那里应该可以解决问题。
归档时间: |
|
查看次数: |
2041 次 |
最近记录: |