设置委托会使应用程序崩溃

Setting a delegate makes app crash

我实例化一个 WebViewController 以模态方式呈现它(其中包含 webView 的 UIViewController)并尝试将当前 class 设置为其 webView 的委托,但它导致应用程序崩溃。

let webVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "WebViewController") as! WebViewController
                        UIApplication.topViewController()?.present(webVC, animated: true, completion: {
                            webVC.webView.load(data, mimeType: response.mimeType!, textEncodingName: response.textEncodingName!, baseURL: response.url!)
                            webVC.webView.delegate = self
                        })

我尝试删除 "vc.webView.delegate = self" 部分,页面加载正常。有什么想法会导致这里出现问题吗?

崩溃是说当 UIWebView 尝试向委托发送消息时,委托不再存在。这是 objc_msgSend 的正常原因。 (或者你调用了一个不存在的方法......但对于可选方法来说这不太可能。)

确保在 self 超出范围之前删除委托,或者如果需要它来处理重定向,请保留委托对象。

addSubView后,保留了webVC的视图,释放了webVC(因为是局部变量) 你应该将 webVC 声明为全局变量,这样 webVC 将不会被释放