iOS 6.1 AudioQueueStop,AudioQueueDispose 错误

Posted

技术标签:

【中文标题】iOS 6.1 AudioQueueStop,AudioQueueDispose 错误【英文标题】:iOS 6.1 AudioQueueStop, AudioQueueDispose error 【发布时间】:2013-01-15 05:54:56 【问题描述】:

为我的 ios 应用程序使用音频队列,我在 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 上)。所以我代码中的其他部分可能会影响,但我无法弄清楚。

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

【问题讨论】:

我也有同样的问题。就我而言,AudioQueueDispose 根本不会返回。您是否向 Apple 提交了错误报告?请让我知道你是否发现了这一点 抱歉回复晚了。就我而言,问题是我注册到 AudioQueue 的回调函数的时间。我使用了互斥机制,它导致了死锁。不过这在 iOS6 上并没有发生。 【参考方案1】:

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

【讨论】:

以上是关于iOS 6.1 AudioQueueStop,AudioQueueDispose 错误的主要内容,如果未能解决你的问题,请参考以下文章

IBM Worklight 6.1 - iOS 6.1 上的 App Center 错误

addSubview 崩溃 iOS 5.1 但不是 6.1

KeyboardWillShowNotification 不适用于 iOS > 6.1

具有 6.1 部署目标的 iOS 应用程序 [重复]

如何在 iOS 6.1 上重现网站崩溃

ios 6.1 注释视图,如标准地图