это не контроллер представления, который выгружается при вызове viewDidUnload, а только его представление . Контроллер представления остается в живых, пока он не будет освобожден.
В viewDidUnload вы должны освободить те объекты, которые являются частью представления, и все, что может и будет воссоздано в viewDidLoad (потому что viewDidLoad будет вызываться снова, когда контроллеру представления необходимо воссоздать его представление). Это включает в себя все ваши выходы. Вы также должны установить эти переменные в ноль, чтобы избежать их перевыпуска.
Поскольку в dealloc вы должны освободить все объекты, которые сохраняет ваш контроллер представления, включая те, которые вы включили в viewDidUnload.