2012-01-17 2 views
0

это мой код для генерации шума с помощью Audio Queue:очередь Аудио и EXC_BAD_ACCESS

http://pastebin.com/Kn8GU72J

Проблема заключается в том, что мой код генерирует EXC_BAD_ACCESS. Проблема заключается в задании

MAAudioManager *audioMngr = (__bridge MAAudioManager *) inUserData; 

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

Любая идея?

ответ

1

Есть ли что-нибудь в другом месте программы, которое сохраняет экземпляр MAAudioManager? Похоже, к тому моменту, когда вызывающий вызов вызван, он был dealloc'd.

+0

Вы правы. Такая же программа без ARC работает нормально. Кажется, что ARC выпускает экземпляр MAAudioManager. Хорошо, мне нужно изучить немного лучше ARC. Между тем, любая идея о том, как я могу избежать того, что ARC освобождает объект? благодаря! – Carlo

+0

Вам нужно сохранить указатель на экземпляр MAAudioManager где-нибудь. Вы можете сохранить его в переменной экземпляра объекта, который его создает, или делегата приложения, например. – joerick

+0

Это также хорошая идея для отладки с NSZombie, вы можете сделать это в диалоговом окне «Схема», этот параметр называется «Включить объекты зомби». При этом вы получите больше информации, а не только EXC_BAD_ACCESS. – joerick