iOS AudioSessionInitialize错误

时间:2012-06-22 18:15:55

标签: ios audiosession

我正在编写一个使用音频队列的iPad应用程序。我遇到因多次调用AudioSessionInitialize而导致的错误。我正试图找到一种方法来测试AudioSessionInitialize是否已被调用以避免这种情况,但到目前为止还没有运气。有没有人有办法做到这一点?

先谢谢。

2 个答案:

答案 0 :(得分:2)

您可以按照以下方式将其包装在dispatch_once块中:

static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
    AudioSessionInitialize(NULL, NULL, InterruptionListenerCallback, clientData);
    // Perform other setup here...
});

尽管从长远来看,您可能会发现使用隐式初始化会话并通过委托处理事件更容易,如下所述:

Audio Session Programming Guide - Initializing Your Audio Session

答案 1 :(得分:1)

由于音频会话当前是全局属性,因此可以在初始化时设置C全局变量标志,然后在尝试(重新)初始化之前检查此全局变量。但是,如果您的应用程序是多线程的,dispatch_once块不太可能引发竞争条件错误。