我有一个视图,它有一个dropdownmenu作为子视图。现在,当视图被取消分配时,我收到错误。 "被解除分配,而关键价值观察者仍然在其注册"
在views类中,我正在设置观察者:
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)
}
但编译器告诉我&#34;无法调用&#39; removeObserver&#39;使用&#39; DropDownMenu&#39;&#34;
的参数列表我做错了什么?谢谢!
答案 0 :(得分:1)
拥有look at the documentation:该方法称为removeObserver(_ observer: NSObject, forKeyPath keyPath: String)
。所以你需要这样做:
dropDownMenu.removeObserver(self, forKeyPath: "frame")