Это намного проще и также работает (iOS 4.0 и более поздние версии)
MyRootViewController *vc = [[MyRootViewController alloc] init];
[window setRootViewController:vc];
[vc release];
-setRootViewController автоматически добавляет вид контроллера в окно, поэтому вам не нужно об этом беспокоиться. Это свойство (неатомное, сохраняемое), поэтому его освобождение после назначения его окну фактически передает владение объектом UIWindow и будет освобождено (и, следовательно, освобождено), когда окно будет освобождено. Конечно, вы можете создать переменную экземпляра, сохранить ссылку на нее и выпустить в -dealloc, если вы хотите что-то сделать с ней в других методах делегата приложения. Я предпочитаю описанный выше метод, поскольку он автоматически выполняет очистку.
Если вы не знаете, вы также можете разблокировать контроллеры представления сразу после добавления их представлений в любое другое представление в качестве подпредставления или представления представления контроллеров модального представления. Всякий раз, когда представление удаляется или извлекается из стека представлений, его соответствующие контроллеры также освобождаются.
Вам не нужно использовать initWithNibName, просто ... alloc] init]; будет делать.