Возможно, это плохая практика, но из документации, которую я прочитал, я получил совет инициализировать объекты в некоторых случаях внутри метода viewDidLoad и ноль в viewDidUnload.
Например, если у вас есть что-то вроде добавления Observer
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(filterready:)
name:@"filterReady"
object:nil];
Теперь у меня нет способа удалить Observer, однако viewDidLoad вызывается каждый раз, когда отображается представление, что приводит к тому, что несколько наблюдателей работают через некоторое время, а селектор вызывается несколько раз.
Я могу исправить это, переместив некоторые очистители в метод viewDidDisappear, но теперь у меня есть некоторые сомнения, если я поступаю правильно.
В моем примере у меня есть несколько контроллеров навигации, которые контролируют свои поднавигации, но dealloc никогда не вызывается для них, даже если на них не ссылаются