2012-01-17 4 views
0

これはオーディオキューを使用してノイズを生成するための私のコードです:オーディオキューとEXC_BAD_ACCESS

http://pastebin.com/Kn8GU72J

問題は、私のコードはEXC_BAD_ACCESSを生成していることです。この問題は、コールバックルーチンで割り当て内にあるようです。

MAAudioManager *audioMngr = (__bridge MAAudioManager *) inUserData; 

私はそれがMAAudioManagerクラスのスレッドによるアクセスに関連していると思われます。

答えて

1

MAAudioManagerインスタンスを保持するプログラムの他の場所はありますか?コールバックが呼び出されるまでにdeallocされたようです。

+0

あなたは正しいです。 ARCのない同じプログラムが正常に動作します。 ARCがMAAudioManagerインスタンスをリリースしたようです。さて、私は少し良いARCを勉強する必要があります。一方、ARCがオブジェクトを解放するのを避ける方法についての考え方はありますか?ありがとう! – Carlo

+0

MAAudioManagerのインスタンスへのポインタをどこかに置いておく必要があります。それを作成するオブジェクトのインスタンス変数や、アプリケーションデリゲートに保持することができます。 – joerick

+0

NSZombieを使ってデバッグするのも良い考えです。「Scheme」ダイアログでこれを行うことができます。「ゾンビオブジェクトを有効にする」というオプションがあります。これを有効にすると、EXC_BAD_ACCESSではなく、より多くの情報が得られます。 – joerick