Почему initWithRootViewController не сохраняет класс viewController, который передается в него? - PullRequest
1 голос
/ 28 июня 2009

У меня есть собственный viewController, называемый SourceListViewController, и я добавляю его в UINavigationController, вид которого затем добавляется в окно приложения iphone. После передачи SourceListViewController в UINavigationController, я освобождаю sourceListViewController.

SourceListViewController *sourceListVC = [[SourceListViewController alloc] initWithNibName:@"SourceListViewController" bundle:nil];
UINavigationController *navigationController = [[[UINavigationController alloc] initWithRootViewController:sourceListVC] autorelease];
[sourceListVC release];

Когда я делаю это, приложение зависает после загрузки представления на телефон. Когда я закомментировал последнюю строку, приложение работало нормально. Разве initWithRootViewController не должен сохранять копию sourceListVC?

1 Ответ

8 голосов
/ 28 июня 2009

Вы автоматически выпускаете навигационный контроллер. Так что, если navigationController получит автоматическое освобождение (что, вероятно, произойдет в следующем цикле выполнения), то и sourceListVC будет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...