Когда объем памяти будет ограничен, ОС выведет ваш обзор, но сначала вызовет viewDidUnload
;когда он должен перезагрузить их, он вызывает viewDidLoad
.dealloc
, однако, вызывается только тогда, когда все ссылки на ваше представление были освобождены, что, вероятно, не произойдет, пока ваше приложение не закроется.
В результате, как заметил @utureelite7, вы добавляетеновый наблюдатель каждый раз, когда ваш вид перезагружается, но, по сути, никогда не удаляет его.
Все, что вам нужно сделать, это убедиться, что наблюдатель добавлен в viewDidLoad
и удален в viewDidUnload
, у вас не будетпроблема множественных уведомлений.Нет необходимости в флаге или в размещении наблюдателя где-либо еще.
Из ваших комментариев кажется, что вы, возможно, попробовали его, но я предлагаю пройтись по своему коду и убедиться, что вы только добавляете их в DidLoadи всегда удаляем их в DidUnload.Он работает как приложение в приложении после приложения.
Отредактировано для добавления
Поскольку ваш вид продолжает выгружаться, что происходит, только если вы делаете это вручную,если все ссылки на него утеряны, или если память переполнена, я предлагаю рассмотреть все три, чтобы убедиться, что вы делаете все возможное, чтобы сохранить свой взгляд.