2016-06-12 98 views
0

我有一个视图,它有一个下拉菜单作为子视图。现在,当视图被释放时,我正在收到一个错误。 “被释放,而键值观察家仍用它注册”从子视图删除观察者

在视图类我设置的观察者:

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) 
} 

但编译器告诉我“不能invok e'removeObserver'与参数列表'DropDownMenu'“

我在做什么错?谢谢!

回答

1

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

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

我明白了!非常感谢!我读的是object.removeObserver(anotherObject)会删除给定对象的所有观察者连接。我猜这是错误的。再次感谢! – weka1