Пожалуйста, помогите с падением modalViewController - PullRequest
0 голосов
/ 04 декабря 2011

Мое приложение падает, когда я отклоняю ModalViewController через:

[self.parentViewController dismissModalViewControllerAnimated:YES];

Этот модальный контроллер представления ("MVC") отображается, когда пользователь нажимает на одну из ячеек UINavigationController ("NavRoot").") - вот код для этого:

MVC *modalView = [[MVC alloc] initWithNibName:@"MVC" bundle:nil];
[self.navigationController presentModalViewController: modalView animated:YES];
[modalView release];         

Загруженный «modalView» содержит только 2 объекта: объект UIWebView и кнопку «DONE», которая при нажатии выполняет удаление с помощью:

[self.parentViewController dismissModalViewControllerAnimated:YES];

За исключением случаев, когда я нажимаю «Готово» - приложение вылетает.

Когда я запускаю Instruments с NSZombies, я вижу, что количество сохранений достигает -1, но я не могу сказать, что вызвало этот перевыпуск.

Единственное, что я нашел, чтобы решить проблему, это либо добавить оператор "[modalView retain]" в "NavRoot" - то есть viewController, который представляет modalView:

MVC *modalView = [[MVC alloc] initWithNibName:@"MVC" bundle:nil];
[self.navigationController presentModalViewController: modalView animated:YES];
[modalView retain];  //  <<== new 'retain' statement
[modalView release];

или просто просто никогда не выпускать modalView:

MVC *modalView = [[MVC alloc] initWithNibName:@"MVC" bundle:nil];
[self.navigationController presentModalViewController: modalView animated:YES];
// commenting out the 'release':
// [modalView release];

Обе эти опции выдают флаги, когда я запускаю «Анализ» («Потенциальная утечка объекта, расположенного в строке 34» ...), ноони решают проблему.Тем не менее, я беспокоюсь о том, что Apple может отклонить приложение из App Store.

Есть идеи о том, что может стать причиной переиздания?Или, как я мог бы в дальнейшем попытаться выделить / идентифицировать проблему?

, прикрепив изображение отчета «Инструменты / Зомби»: enter image description here

Ответы [ 4 ]

1 голос
/ 04 декабря 2011

Используете ли вы iOS 5?У меня была такая же проблема, когда я переключил приложение с ios4 на 5.

ParentViewController теперь называется presentingViewController

Что вы можете сделать, хотя в вашем модальном представлении просто вызовите [self dismissModalViewController] и онодолжен уволить себя.Я не на 100% об этом и не могу проверить, потому что я не рядом с моим Mac, но я вспоминаю, что читал это в документации,

0 голосов
/ 22 марта 2012

[self dismissModalViewControllerAnimated:YES] не работает на iOS 5.

Я создал категорию, которая добавляет presentingViewController на iOS 4. (Она отключается на iOS 5.)

Просто включите2 файла, и это работает без проблем.

Пожалуйста, смотрите back-modeal .

Надеюсь, это принесет вам столько же пользы, сколько и мне;Это делает ваш код более чистым!

0 голосов
/ 15 января 2012

Чтобы уволить modalViewController, я просто делаю: [self dismissModalViewControllerAnimated:YES];.

0 голосов
/ 04 декабря 2011

Если вы делаете

[self.navigationController presentModalViewController: modalView animated:YES];

Тогда вы должны отклонить его как

[self.navigationController dismissModalViewControllerAnimated:YES];

Вместо

[self.parentViewController dismissModalViewControllerAnimated:YES];

Откуда вы пытаетесь отклонить представление?Фактический modalView или parentView?Мне кажется, что вы пытаетесь отклонить модальное представление, которое уже было отклонено и впоследствии освобождено.

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