以下のコードには問題があります。
しかし、iOS11では正常に動作し、 iOS10,9 ではクラッシュします。
通常であればクラッシュするのが正しいですが、
iOS11から動作が変わったよ〜など理由を知っている方がいましたら、コメントいただけると嬉しいです。
(Apple公式のソースなど)
問題のあるコード
import UIKit
import WebKit
class ViewController: UIViewController {
weak var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
setupWebView()
}
private func setupWebView() {
webView = WKWebView(frame: .zero) // UIView
webView.uiDelegate = self
webView.navigationDelegate = self
view.addSubview(webView)
webView.load(URLRequest(url: URL(string: "https://google.com")!))
}
}
extension ViewController: WKUIDelegate, WKNavigationDelegate { }

問題を修正したコード
private func setupWebView() {
let webView = WKWebView(frame: .zero)
webView.uiDelegate = self
webView.navigationDelegate = self
view.addSubview(webView)
webView.load(URLRequest(url: URL(string: "https://google.com")!))
self.webView = webView
}
なぜiOS11は問題の有るコードで動作するのか
求む
環境
Xcode 9.2