Недавно столкнулся со сбоем в нашем приложении:
EXC_BREAKPOINT 0x00000001c5c8986c
static URLRequest._unconditionallyBridgeFromObjectiveC(_:)
Это исходит из политики выбора webView, где мы получаем доступ к свойству запроса:
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
let req = navigationAction.sourceFrame.request
}
Я считаю, что проблема в этой строке в быстрой библиотеке: https://github.com/apple/swift-corelibs-foundation/blob/master/Foundation/URLRequest.swift#L298
Здесь нет охранников, и, похоже, со стороны объекта запрос может быть нулевым.
Мой вопрос касается того, как обойти объект на быстром мосту. Избежал бы этого KVC?
if let req = navigationAction.sourceFrame.value(forKey: "request") as NSURLRequest {
//do stuff
}
Если нет способа обойти объект, ведущий к быстрому мосту, это авария, с которой нам придется жить? Это происходит не слишком часто, но достаточно, чтобы мы хотели исправить.