设置委托会导致应用程序崩溃

时间:2016-12-13 16:02:17

标签: swift webview uiwebview

我实例化一个WebViewController以模态方式呈现它(其中包含webView的UIViewController)并尝试将当前类设置为其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”部分,并且页面加载就好了。有什么想法会导致问题吗?

enter image description here

2 个答案:

答案 0 :(得分:1)

崩溃说,当UIWebView尝试向代表发送消息时,代理人不再存在。这是objc_msgSend的正常原因。 (或者你称之为一种不存在的方法......但对于可选方法来说这是不可能的。)

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

答案 1 :(得分:0)

在addSubView之后,保留了webVC的视图并发布了webVC(因为它是局部变量) 您应该将webVC声明为全局变量,这样就不会释放webVC