【发布时间】:2013-01-15 05:54:56
【问题描述】:
为我的 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 上)。所以我代码中的其他部分可能会影响,但我无法弄清楚。
有没有人遇到过类似的问题并希望得到解决?
【问题讨论】:
-
我也有同样的问题。就我而言,AudioQueueDispose 根本不会返回。您是否向 Apple 提交了错误报告?请让我知道你是否发现了这一点
-
抱歉回复晚了。就我而言,问题是我注册到 AudioQueue 的回调函数的时间。我使用了互斥机制,它导致了死锁。不过这在 iOS6 上并没有发生。
标签: objective-c ios6 audioqueue