Странный EXC_BAD_ACCESS с [самоотклонениемModalViewControllerAnimated]

В моем приложении я переключаюсь между представлениями модально. Моя проблема в том, что когда я перехожу с первого viewController на второй, он работает. Когда я впервые отклоняю второе представление, это тоже работает. Где проблема, скажете вы? Приближается. Когда я перехожу с первого viewController на второй второй раз, он снова работает. Как и должно быть. Тем не менее, когда я пытаюсь закрыть второй viewController во ВТОРОЙ раз, я получаю ошибку EXC_BAD_ACCESS на

[self dismissModalViewControllerAnimated:YES];

линия.

Почему во второй раз вылетает, а в первый раз никогда?

РЕДАКТИРОВАТЬ ОДИН:

Эта ошибка возникает независимо от того, на какой viewController я переключаюсь:

Если я перехожу от A к B, затем обратно к A, затем к B, затем пытаюсь вернуться к A: сбой Если я перехожу от A к C, затем обратно к A, затем к C, затем пытаюсь вернуться к A : опять краш

РЕДАКТИРОВАТЬ ДВА:

Я создаю/показываю контроллер представления с помощью этого кода:

MapView *controller = [[MapView alloc] initWithNibName:@"MapView" bundle:nil];

controller.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:controller animated:YES];

Должен ли я выпускать этот объект после его создания?

Проблема решена. Оскорбительная строка кода использовалась ранее для перехода, который я использовал до того, как использовал модальные представления, и я забыл удалить ее. Победить.


person eric.mitchell    schedule 21.10.2011    source источник
comment
Поиск включения NSZombies с XCode4   -  person bryanmac    schedule 21.10.2011
comment
Уже сделал это, мало или совсем не предоставил информации   -  person eric.mitchell    schedule 21.10.2011
comment
Консоль не дает мне никакой информации или отчета об ошибке   -  person eric.mitchell    schedule 21.10.2011


Ответы (1)


Как правило, ошибка EXC_BAD_ACCESS означает, что вы пытаетесь сослаться на освобожденный объект, то есть вы освобождаете что-то сверх нормы. Проверьте свое управление памятью, возможно, запустите инструмент Build/Build and Analyze.

И да, вы должны вызывать [controller release]; после модального представления контроллера представления.

person PengOne    schedule 21.10.2011
comment
Но что может быть перевыпущено? Себя? Как это вообще могло случиться? - person eric.mitchell; 21.10.2011
comment
С помощью NSLog я подтвердил, что self не равно нулю, когда вызывается увольнение; что еще может быть причиной проблемы? - person eric.mitchell; 21.10.2011