Нахождение ошибок EXC_BAD_ACCESS в проекте Какао
Q: Как делают я нахожу EXC_BAD_ACCESS ошибки в проекте Какао?
A: Как делают я нахожу EXC_BAD_ACCESS ошибки в проекте Какао?
Этот вид проблемы обычно является результатом сверхвыпуска объекта. Это может очень сбить с толку, так как отказ имеет тенденцию происходить много позже того, как ошибка сделана. Катастрофический отказ может также произойти, в то время как программа глубока в коде платформы, часто ни с одним из Вашего собственного кода, видимого в штабеле.
Сводка
Для предотвращения проблем как это необходимо соблюсти правила управления памятью Какао. Обратитесь к Руководству по программированию управления памятью «документа ADC's для Какао». Раздел «Object Ownership and Disposal» описывает основную политику.
Важные факторы
Если Вы непосредственно выделяете, копируете или сохраняете объект, Вы ответственны за выпуск недавно созданного объекта с
releaseилиautorelease. Любое другое время Вы получаете объект, Вы не ответственны за выпуск его.Возвращенный объект, как обычно гарантируют, останется допустимым в методе, это было получено в (исключения включают многопоточные приложения и некоторые Распределенные ситуации с Объектами). Тот метод может также безопасно возвратить объект своему invoker.
Если необходимо сохранить возвращенный объект в переменной экземпляра, необходимо сохранить или скопировать его.
Использовать
retainиautoreleaseпри необходимости препятствовать объекту быть лишенным законной силы как нормальный побочный эффект сообщения.При инстанцировании объекта с помощью удобного метода объект уже намечен для
autorelease. Не отправляйте areleaseилиautoreleaseобменивайтесь сообщениями к этому объекту.Никогда не отправляйте a
deallocобменивайтесь сообщениями к объекту. Это может избавиться от объекта, но он делает так независимо от текущего подсчета ссылок. Любой другой объект, сохранивший освобожденный объект, оставляют с недопустимой ссылкой.Никогда не делайте предположения о том, как или в том, какой порядок автовыпустил объекты, расположены.
Техническая документация
Для получения информации о вызванном средстве отладки NSZombieEnabled чтобы помочь изолировать эту добрую проблему, а также другие подсказки по отладке, относятся к:
Техническое примечание 2 124 волшебства отладки Mac OS X
Эта тема также упоминается в Ссылочной документации Библиотеки ADC:
Поскольку обзор объектов Какао и их жизненных циклов относится к следующему руководству:
История версии документа
| Дата | Примечания |
|---|---|
| 10.10.2006 | Новый документ, обсуждающий, как найти нарушения защиты памяти или ошибки EXC_BAD_ACCESS в проектах Какао. |