Swift类错误WKWebView被解除分配,而键值观察者仍然注册了它

Swi*_*ft1 1 addobserver uiprogressview swift

我从viewController中删除名为"myBrowser"的观察者时遇到问题.我有一个ProgressView栏,这是我添加观察者的代码:

 webView!.addObserver(self, forKeyPath: "estimatedProgress", options: .New, context: nil)
Run Code Online (Sandbox Code Playgroud)

在这个控制器中,我有一个按钮,让我回到另一个控制器:

@IBAction func disa(sender: UIBarButtonItem) {

self.navigationController?.popViewControllerAnimated(true)

}
Run Code Online (Sandbox Code Playgroud)

如果我加

webView?.removeObserver(self, forKeyPath: "estimatedProgress")
Run Code Online (Sandbox Code Playgroud)

在disa func中,我的应用程序崩溃,因为"WKWebView被解除分配,而键值观察者仍然注册了它"...我尝试将viewOidDisapper中的removeObserver放在viewWillDisappear中,但是如果我在progressView栏完全加载之前按下按钮我的应用程序仍会崩溃.

我该如何解决这个问题?

tes*_*sla 11

删除deinit方法中的观察者

deinit {
    webView!.removeObserver(self, forKeyPath: "estimatedProgress")
}
Run Code Online (Sandbox Code Playgroud)

  • 首先,删除所有addObserver语句并从viewDidLoad中保留一个.二,尝试使用:webView!.removeObserver(self,forKeyPath:"estimatedProgress"),注意'webView!' 它是明确解开的,只在deinit()中使用它 (2认同)