Функция контроллера deinit
контроллера моего вида вызывается каждый раз, когда я получаю NSNotification и выполняю соответствующий селектор !!! Вот код моего взгляда контроллера:Выполнение селектора после получения NSNotification вызывает дефиницию моего контроллера просмотра
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "initModels", name: "xyz.notification", object: nil)
}
func initModels(){
print("Received notification to init models")
}
deinit {
print("De-init view controller")
NSNotificationCenter.defaultCenter().removeObserver(self)
}
Каждый контроллер вид получает уведомление, он выполняет «initModels» нормально, но потом «Deinit» прямо называется! Вот что получить напечатанный на консоли:
Received notification to init models
De-init view controller
Я проверил все, что связано с многопоточностью. Уведомление отправляется по основному потоку и выполняется в основном потоке.
Возможно, существует веская причина, по которой ваш vc освобождается (например, локальная переменная, которая ссылается на неё) произойти сразу после отправки уведомления ...? –
Кроме того, хорошая практика заключается в том, чтобы ваши обработчики уведомлений принимали один параметр типа NSNotification (но я не уверен, что является следствием вашей подписи). –