NSZombieEnabled не сообщает тип объекта, вызывающий ошибку EXC_BAD_ACCESS

StackOverflow https://stackoverflow.com/questions/1632791

Вопрос

У меня сбой, который происходит по какой-то причине в глубине UIKit; ошибка EXC_BAD_ACCESS происходит что-то вроде 8 вызовов глубоко в вызове dismissModalViewController. Я попытался включить NSZombieEnabled для моего исполняемого файла, но журнал консоли печатает ту же ошибку независимо от того, включены зомби или нет, и я не знаю, какой объект вызывает проблему. Мне чего-то не хватает, что мне нужно сделать, чтобы консоль выводила правильную информацию?

Это было полезно?

Решение

Подробнее об использовании зомби здесь .

Запустите это в GDB. Когда вы получите EXC_BAD_ACCESS , посмотрите на стек в этой точке (используйте команду gdb's where или запустите отладчик графического интерфейса Xcode). Если у вас все еще есть проблемы, опубликуйте стопку в исходном вопросе.

Также зомби помогут вам, только если вы имеете дело с NSObjects. Если вы используете низкоуровневые подпрограммы malloc / free, зомби ничего не покупают за эти ассигнования.

Другие советы

Одна вещь, которую я узнал в прошлые выходные, когда NSZombieEnabled, похоже, не работал вообще - убедитесь, что вы не передаете не-объект в некоторый код.

В моем случае я возвращал строку NSString как просто " строку " вместо @ " строка " ;. Это означало, что я перезаписывал объект NSString c-строкой. Когда я позже попытался написать новое значение в этом объекте, я получил BAD_ACCESS. NSZombie's не мог помочь, потому что это был не объект, который я пытался перезаписать, а эта c-строка.

Кроме того, обрабатывайте все предупреждения как ошибки в XCode - хотелось бы, чтобы они отображались в RED в графическом интерфейсе IDE - иногда их легко пропустить.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top