什么是WKErrorWebViewInvalidated?

Dan*_*erg 6 javascript cocoa webkit objective-c wkwebview

我有一个WKWebView,我通过-[WKWebView evaluateJavaScript:completionHandler:]定期发送javascript ,Web视图返回以下错误:

Error Domain=WKErrorDomain Code=3 "The WKWebView was invalidated" UserInfo={NSLocalizedDescription=The WKWebView was invalidated

相应的WKError似乎是WKErrorWebViewInvalidated,但WKError.h似乎只是说下面这个错误:

@constant WKErrorWebViewInvalidated                Indicates that the WKWebView was invalidated.
Run Code Online (Sandbox Code Playgroud)

一旦我从Web视图收到此错误,我就不能再执行任何后续的javascript了,我需要抛弃Web视图并创建一个新视图.我在网上搜索了有关此错误的更多详细信息,但未能找到任何实质内容.有人可以帮助解释这个错误意味着什么,以及我如何调试可能导致它的原因.谢谢.

Ste*_*ntz 0

这意味着网页内容进程已经死亡。这是运行 JavaScript 并执行WKWebView.

不幸的是,这个过程是由 WebKit 管理的,你对它的控制权为零。因此,如果您的设备内存不足,有一个非常好的改变,它会随机杀死一个网页内容进程。那就是您收到WKErrorWebViewInvalidated错误的时候。

  • 据我了解,如果 Web 内容进程终止,您会收到“WKErrorWebContentProcessTermminate”错误,如果您运行的是 iOS 9+,您会收到“webViewWebContentProcessDidTerminate:”回调,但我没有收到。这让我认为“WKErrorWebViewInvalidated”指的是与进程死亡不同的东西。 (5认同)