最近在我们的应用程序中遇到了崩溃:
EXC_BREAKPOINT 0x00000001c5c8986c
static URLRequest._unconditionallyBridgeFromObjectiveC(_:)
它来自 webView 决定我们访问请求属性的策略:
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
let req = navigationAction.sourceFrame.request
}
我相信问题出在 swift lib 中的这一行: https ://github.com/apple/swift-corelibs-foundation/blob/master/Foundation/URLRequest.swift#L298
这里没有守卫,似乎在 objc 方面,请求可能为零。
我的问题是关于如何绕过 objc 来快速桥接。KVC 会避免这种情况吗?
if let req = navigationAction.sourceFrame.value(forKey: "request") as NSURLRequest {
//do stuff
}
如果没有办法绕过 objc 来快速桥接它是我们将不得不忍受的崩溃?它不会发生得太频繁,但足以让我们愿意修复。