Почему initWithRootViewController не сохраняет класс ViewController, который передается в него?
-
20-08-2019 - |
Вопрос
У меня есть пользовательский 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?
Решение
Вы автоматически запускаете NavigationController.Так что, если NavigationController будет автоматически выпущен (что, вероятно, произойдет в следующем цикле выполнения), то же самое произойдет и с sourceListVC.