NSZombieEnabled не сообщает тип объекта, вызывающий ошибку EXC_BAD_ACCESS
-
06-07-2019 - |
Вопрос
У меня сбой, который происходит по какой-то причине в глубине 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 - иногда их легко пропустить. Р>
Похоже, что-то переизбыток в вашем контроллере модального представления. Начните с комментирования новых строк, пока они не перестанут прерываться.