2012-01-17 48 views
0

这是我的用于使用音频队列生成噪声码:音频队列和EXC_BAD_ACCESS

http://pastebin.com/Kn8GU72J

的问题是,我的代码生成EXC_BAD_ACCESS。该问题似乎在分配

MAAudioManager *audioMngr = (__bridge MAAudioManager *) inUserData; 

在回调例程中。 我怀疑这可能与MAAudioManager类的线程访问有关。

有什么想法?

回答

1

程序中是否还有其他地方保留MAAudioManager实例?看起来在回调被调用的时候它已经被释放了。

+0

你说得对。没有ARC的同一个程序运行良好。看来ARC发布了MAAudioManager实例。好的,我需要研究一下更好的ARC。同时,关于如何避免ARC释放对象的想法?谢谢! – Carlo 2012-01-17 19:12:01

+0

您需要在某处保留一个指向MAAudioManager实例的指针。例如,您可以将其保存在创建它的对象的实例变量或应用程序委托中。 – joerick 2012-01-17 20:01:55

+0

用NSZombie进行调试也是一个好主意,你可以在'Scheme'对话框中做到这一点,该选项被称为“启用僵尸对象”。通过这种方式,您将获得更多信息,而不仅仅是EXC_BAD_ACCESS。 – joerick 2012-01-17 20:06:03

相关问题