2016-06-12 9 views
0

У меня есть представление, которое имеет dropdownmenu в качестве подзаголовка. Прямо сейчас я получаю сообщение об ошибке, когда представление освобождается. «Было высвобожден в то время как наблюдатели ключевого значения по-прежнему зарегистрированы с ним»Удалить наблюдателя из subview

В классе просмотры я устанавливаю наблюдатель:

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

Но компилятор говорит мне: «Невозможно вызвать e 'removeObserver' со списком аргументов 'DropDownMenu' '

Что я делаю неправильно? Спасибо!

ответ

1

Имейте look at the documentation: метод называется removeObserver(_ observer: NSObject, forKeyPath keyPath: String). Так что вам нужно:

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

Я вижу! Спасибо огромное! Я читал, что object.removeObserver (anotherObject) удалит все соединения наблюдателей для данных объектов. Наверное, это было неправильно. Так что еще раз спасибо! – weka1