设置委托会使应用程序崩溃
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 将不会被释放
我实例化一个 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 将不会被释放