1

我从名为“myBrowser”的视图控制器中删除观察者时遇到问题。我有一个 ProgressView 栏,这是我添加观察者的代码:

 webView!.addObserver(self, forKeyPath: "estimatedProgress", options: .New, context: nil)

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

@IBAction func disa(sender: UIBarButtonItem) {

self.navigationController?.popViewControllerAnimated(true)

}

如果我添加

webView?.removeObserver(self, forKeyPath: "estimatedProgress")

在 disa func 中,我的应用程序崩溃,因为“WKWebView 已被释放,而键值观察者仍向其注册”...我尝试将 removeObserver 放在 viewDidDisapper 中,在 viewWillDisappear 中,但如果我在 progressView 栏完全加载之前按下按钮,我的应用程序仍然崩溃.

我该如何解决这个问题?

4

1 回答 1

13

移除deinit方法中的观察者

deinit {
    webView!.removeObserver(self, forKeyPath: "estimatedProgress")
}
于 2015-12-22T22:18:12.953 回答