4

iOS アプリに Audio Queue を使用して、iOS6.1 でのテストで問題が発生しましたが、iOS6 では問題なく動作しました。

問題は、 AudioQueueStopAudioQueueDisposeがすぐに返らないか、クラッシュすることがあります。

このような:

if (_audioQueue)
{
  auto err = AudioQueueStop(_audioQueue, true);   // Some delay before return
  for (int i = 0; i < kNumberAudioQueueBuffers; i++) {
    AudioQueueFreeBuffer(_audioQueue, _audioQueueBuffer[i]);
  }    
  err = AudioQueueDispose(_audioQueue, true);    // This also has delay
  _audioQueue = nil;
}

これはメインスレッドではなく別のスレッドで呼び出されますが、AudioQueueNewoutputAudioQueueStartなどの他のものもそのスレッドで呼び出されます。

実際、テストとして AudioQueue を使用する単純なアプリを実行しようとしましたが、その場合は正常に動作しました (iOS6 と 6.1 の両方で)。したがって、コードの他の部分が影響する可能性がありますが、わかりませんでした。

同様の問題があり、うまくいけば修正された人はいますか?

4

1 に答える 1

0

AudioQueueSetProperty() と kAudioQueueProperty_MagicCookie で同様の問題が発生しています。iOS 6.0 以前で正常に動作していた場合、これが呼び出されるたびにアプリがクラッシュします。私は、Apple が 6.1 でオーディオ キューの実装を台無しにしたと考えています。

于 2013-02-12T05:53:07.237 に答える