Мне кажется, viewDidUnload - это то место, куда его можно поставить.
Если обработчик уведомлений, который вызывается, получает доступ к любому из представлений, управляемых контроллером представления, это будет либо ошибкой, либо приведет к ненужной перезагрузке представления. Если ваше представление не отображается, скорее всего, контроллер представления не нужно уведомлять. Если это так, хотя бы проверьте, загружено ли представление, прежде чем вносить в него какие-либо изменения. Пока представление не загружено, вам все равно может потребоваться обновить состояние контроллера представления, например, изменить или изменить кешированные значения, но не обновлять представление, пока оно не загрузится снова.
Во-вторых, что произойдет, если вы не удалитеObserver в viewDidUnload, и viewDidLoad будет вызван снова? Вы снова вызываете addObserver. Вероятно, не повредит, центр уведомлений может обнаружить дубликаты добавлений.