Отслеживание EXC_BAD_ACCESS на iPad - PullRequest
0 голосов
/ 03 июня 2010

Я использовал этот код для создания своего окна UIWindow

UIMyWindow* win = [[UIMyWindow alloc] 
                   initWithFrame:[[UIScreen mainScreen] applicationFrame]];

UIMyWindow не является чем-то особенным, он просто имеет указатель на класс C ++, который выполняет некоторую обертку ObjectiveC.

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

Довольно интересно, мой код работает в Release.

Мое единственное предположение, что я сделал некоторые повреждения памяти в совершенно другом месте. Мои вопросы: Какой тип повреждения памяти это может быть? И есть ли хорошие практики для их отслеживания?

1 Ответ

1 голос
/ 03 июня 2010

У вас наверняка есть сообщение, которое отправляется на освобожденный объект.

Вы должны попытаться отладить вашу программу с помощью Instruments.app. Он должен показать вам потенциальные проблемы с памятью.

Также взгляните на переменную окружения NSZombieEnabled . По сути, он оставляет фиктивный объект на месте освобожденного объекта. Вы будете предупреждены, когда на этот фиктивный объект будет отправлено сообщение, позволяющее увидеть, где находится проблема.

...