代码之家  ›  专栏  ›  技术社区  ›  Swift1

Swift类错误WKWebView被释放,而键值观察器仍在注册

  •  1
  • Swift1  · 技术社区  · 9 年前

    我在从名为“myBrowser”的viewController中删除观察者时遇到问题。我有一个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栏完全加载之前按下按钮,我的程序仍然崩溃。

    我如何解决这个问题?

    1 回复  |  直到 9 年前
        1
  •  13
  •   nsinvocation    9 年前

    拆下中的观察者 deinit 方法

    deinit {
        webView!.removeObserver(self, forKeyPath: "estimatedProgress")
    }