从子视图中移除观察者

Remove observer from subview

我有一个视图,它有一个下拉菜单作为子视图。现在我收到一个错误,当视图被释放时。 "was deallocated while key value observers were still registered with it"

在视图class中我正在设置观察者:

override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
    self.setNeedsDisplay()
    if keyPath == "frame" {
        // Set up DropdownMenu
        self.dropDownBackground.frame.size.height = self.dropDownMenu.frame.maxY
    }   
}

并将其添加到子视图:

dropDownMenu.addObserver(self, forKeyPath: "frame", options: .New, context: nil)

所以为了避免我正在尝试做的错误:

deinit {
    dropDownMenu.removeObserver(self)
}

但是编译器告诉我"Cannot invoke 'removeObserver' with an argument list of 'DropDownMenu'"

我做错了什么?谢谢!

有一个look at the documentation:方法叫做removeObserver(_ observer: NSObject, forKeyPath keyPath: String)。所以你需要做:

dropDownMenu.removeObserver(self, forKeyPath: "frame")