Это ничего не делает ...
ColorController *colorController = [[ColorController alloc] initWithNibName:nibColor bundle:nil];
[[[self navigationController] pushViewController:colorController animated:YES] autorelease];
Вы автоматически высвобождаете возвращаемое значение pushViewController: animated :, void.
Ваш первый фрагмент действителен и корректен.pushViewController: действительно сохраняет контроллер, который выдвигается.
Редактировать: В вашем обновленном коде есть небольшая разница между этими двумя примерами.Оба поддерживают правильное количество сохранений.Тем не менее, рекомендуется избегать использования автоматического восстановления без необходимости (особенно в чувствительной к памяти области, такой как iPhone).Это помогает вашему приложению поддерживать более предсказуемый и управляемый объем памяти.