2014-08-05 5 views
4

Я получаю EXC_BAD_ACCESS. Я знаю, что это обычно означает: попытка получить доступ к объекту, который не существует (больше), является наиболее вероятной причиной.iOS EXC_BAD_ACCESS: как отлаживать?

Итак, где я могу найти это?

Я прочитал многочисленные сообщения в Интернете, и все они говорят:

«Включить NSZombie» в схеме.

Теперь, когда я запускаю отладчик, для чего я должен смотреть? Я не вижу никакой разницы ...

Примечания: Это не про perticular ошибки в моем коде, но, как правило, как использовать отладчик с NSZombie включен

+0

См http://raywenderlich.com/10209/my-app-crashed-now-what-part-1 – rmaddy

+0

Взгляните на соответствующий бар, много подобных вопросов ! – Bas

+2

нет, нет действительно ответ на мой вопрос. Я уже просмотрел связанный бар ... – mrd

ответ

3

Что бы я сделал, это будет определить местонахождение точка останова только на одну строку над зеленой стрелкой, показывающую ошибку EXC_BAD_ACCESS. Затем запустите снова свой код и воспроизведите шаги для генерации сбоя.

Когда вы дойдете до точки останова, вы можете проверить, что ваши объекты являются допустимыми объектами, используя правый клик и распечатайте описание в левой части консоли в Xcode или введя команду «po» в разделе консоли в XCode. Вот как я обычно обнаруживаю ошибки.

Что-то полезное - это трассировка стека после остановки отладчика. Он показывает на левой панели потоки и цепочку вызовов методов до точки останова.

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

+0

Tx, что означает 'po'? печатать объекты? – mrd

+0

Да, когда вы используете C struct use print вместо – artud2000

1

Напишите код в @synchronized(){} блок.

Попробуйте это:

@synchronized (self){ //Your Code } 
Смежные вопросы