2010-06-03 5 views
0

Я использую этот код, чтобы создать мой UIWindowTracking EXC_BAD_ACCESS на IPad

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

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

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

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

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

ответ

1

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

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

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

+0

Я только что заметил, что у меня есть это сообщение в журнале: Предупреждение: текущий язык не соответствует этому фрейму. NSZombieEnabled не помогло. My Instruments.app перестали работать в последний раз, когда я обновил DevEnv или, может быть, он не работает, потому что я тестировал только iPad. Я попытаюсь получить приложение на iPhone, если оно не сработает, я могу попробовать обновить DevEnv. – Aleks

Смежные вопросы