将音频队列用于我的 iOS 应用程序,我在 iOS6.1 上的测试遇到了一些问题,尽管它在 iOS6 上运行良好。

问题是 AudioQueueStop AudioQueueDispose 不会立即返回,或者有时它们会崩溃。

像这样:

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;
}

这不是在主线程上调用,而是在另一个线程上调用,但其他东西,例如 AudioQueueNewoutput AudioQueueStart 也在该线程上调用。

实际上我试图运行一个简单的应用程序,它使用 AudioQueue 作为测试,在这种情况下它运行良好(在 iOS6 和 6.1 上)。所以我代码中的其他部分可能会影响但我无法弄清楚。

有没有人遇到过类似的问题并希望得到解决?

最佳答案

我在 AudioQueueSetProperty() 和 kAudioQueueProperty_MagicCookie 中看到了类似的问题。我的应用程序在每次调用时崩溃,当它在 iOS 6.0 及更早版本上运行良好时。我认为 Apple 搞砸了 6.1 中的音频队列实现。

关于objective-c - iOS 6.1 AudioQueueStop,AudioQueueDispose 错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14331888/

10-10 05:23