Случайный EXC_BAD_ACCESS в месте, где это не может произойти - PullRequest
1 голос
/ 15 июня 2011

Я получаю EXC_BAD_ACCESS в случайное время в месте, где я подтвердил, что исключение не должно происходить.
Линия, на которой это происходит,

`[[LevelEditorScene sharedLevelEditor] setObject:object forKey:key]`

LevelEditorScene - это класс, setObject:forKey: - это метод, который я реализовал (а не метод из NSObject)
В ГБД:

(gdb) print-object [LevelEditorScene sharedLevelEditor]
<LevelEditorScene = 06C3FF40 | Tag = -1>

Значит LevelEditorScene sharedLevelEditor в порядке.

(gdb) print (bool)[[LevelEditorScene sharedLevelEditor]
                    respondsToSelector:@selector(setObject:forKey:)]
$9 = true

Означает, что он отвечает на селектор

(gdb) print-object object
15
(gdb) print-object key
Maze Width

Означает, что аргументы в порядке (в любом случае это не должно иметь значения).
Что еще может быть причиной исключения?

1 Ответ

2 голосов
/ 08 ноября 2011

Строка кода, на которой происходит сбой вашего приложения, может не являться причиной проблемы. Скорее всего, ваш метод вызова в порядке. В противном случае вы получите сообщение об ошибке «сообщение отправлено нераспознанному селектору».

Лучше всего запустить анализатор. Сбой этого профиля с помощью утечек в инструментах.

Блестящее описание EXC_BAD_ACCESS, его причины и способы отладки можно найти здесь:

Понимание Лу Франко EXC_BAD_ACCESS

...