Что не так с этим кодом? Попытка загрузить navController на контроллер модального представления - PullRequest
0 голосов
/ 03 августа 2011

У меня есть UIViewcontroller, который я хочу вставить в UINavigationController, который, в свою очередь, будет выдвигать модальное представление с использованием presentModalViewController: animated.

Вот мой код:

TargetViewController *targetViewController = [[[TargetViewController alloc] init] autorelease];
UINavigationController *targetNavController = [[[UINavigationController alloc] initWithRootViewController:targetViewController] autorelease];
[self presentModalViewController:targetNavController animated:YES];

Когдакод выполняется, модальное представление загружается, как и ожидалось, но после вызова dismissModalViewControllerAnimated: модальное представление сдвигается вниз, и приложение вылетает.

Я получаю следующую ошибку в GDB: - [CALayer retain]: сообщение отправлено на освобожденный экземпляр

Первая часть вопроса: есть ли что-то изначально неправильное в приведенном выше коде?

Вторая часть: если в приведенном выше коде нет ничего плохого, то гдеЯ смотрю рядом с отладкой?

Дополнительная информация: Когда я не не выпускаю или автоматически выпускаю navController, он работает нормально.Но инструменты покажут заброшенную память, и я могу только предположить, что navController не был выпущен.Может быть, контроллер модального представления

PS Я знаю, что сбой связан с управлением памятью вышеупомянутых ViewController, navController и модального представления, потому что мой код работал до того, как связался с этим кодом.

Ответы [ 3 ]

0 голосов
/ 03 августа 2011

Что произойдет, если вы не используете autorelease?

т.е:.

TargetViewController *targetViewController = [[TargetViewController alloc] init];
UINavigationController *targetNavController = [[UINavigationController alloc] initWithRootViewController:targetViewController];
[targetViewController release];
[self presentModalViewController:targetNavController animated:YES];
[targetNavController release];
0 голосов
/ 05 августа 2011

Исправлена ​​проблема. Я выпускал ВК, вызывая аварию. Спасибо за ввод.

0 голосов
/ 03 августа 2011

Обычно вы не выдвигаете navController как представление, поскольку контроллер навигации работает как корневой контроллер.Представления выталкиваются из navController.После того, как вы выдвинули вид, вы можете представить следующий вид модально.

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