Как вы можете преобразовать это в слабую ссылку на себя?Преобразование сильной ссылки на слабую ссылку на себя
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(MyViewController.handleMessage(_:)), name: "NewMessage", object: nil)
NSNotificationCenter.defaultCenter().removeObserver(self, name: "NewMessage", object: nil)
Кроме того, связанный с этим вопрос - когда контроллер вида фактически уничтожается? Я предполагаю, что когда вы входите и выходите из разных видов, контроллеры просмотра все равно остаются в живых? т. е. они не уничтожаются в представленииDidDisappear.
Как ИО 9, центр уведомлений содержит * слабые * ссылки на наблюдателя, см., Например, http://stackoverflow.com/questions/39663984/why-do-you-have-to-remove-observer-in-ios8. –
Хорошо, поэтому ссылка центра уведомлений о себе никогда не станет причиной того, что контроллер просмотра будет придерживаться, верно? – Prabhu
Исправить. Чтобы уточнить, перед iOS 9 он сохранил ссылку «присваивать» наблюдателю, чтобы он также не оставил наблюдателя в памяти. Это ссылка «assign» означала, что вам нужно было удалить себя как наблюдателя в 'dealloc' /' deinit', иначе ваше приложение потерпит крах, когда попытается вызвать селектор на объекте, который был освобожден. – AdamPro13