Когда вы помещаете UIViewControllers в UINavigationController, представление UIViewControllers, которые были "помещены", может быть выгружено для сохранения памяти (поскольку они невидимы).Затем представления при необходимости перезагружаются (и вы получаете обратный вызов viewDidLoad).У вас должны быть IBOutlets для UIViewControllers, а не UINavigationController, чтобы их можно было выпускать в viewDidUnload.Обычный способ освободить их - объявить их как сохраненные свойства и установить для них значение nil (с помощью средства доступа self.outlet) в viewDidUnload и dealloc.Или просто используйте ARC.