调用AUGraphStart进行播放时接收kAUGraphErr_CannotDoInCurrentContext

我正在使用AUGraph和Audio Units API在我的iOS应用程序中播放和录制audio。 现在我有一个罕见的问题,当一个AUGraph无法启动以下错误:

结果= kAUGraphErr_CannotDoInCurrentContext(-10863)

当我们尝试调用为audio播放设置的AUGraphStart ,发生错误不可预知:

 (BOOL)startRendering { if (playing) { return YES; } playing = YES; if (NO == [self setupAudioForGraph:&au_play_graph playout:YES]) { print_error("Failed to create play AUGraph",0); playing = NO; return NO; } //result = kAUGraphErr_CannotDoInCurrentContext (-10863) OSStatus result = AUGraphStart(au_play_graph); if (noErr != result) { print_error("AUGraphStart", result); playing = NO; } return playing; } 

这里我们从文档中得到:

为了避免在渲染线程中旋转或等待(一个坏主意!),许多对AUGraph的调用可以返回:kAUGraphErr_CannotDoInCurrentContext。 这个结果只有在你从rendercallback中调用AUGraph API时才会生成。 这意味着它需要的锁在那个时候由另一个线程保存 。 如果你看到这个结果代码,你通常可以再次尝试这个动作 – 通常是NEXT渲染周期(所以同时锁可以被清除),或者你可以委托给你的应用程序中的另一个线程。 您不应该旋转或放置渲染线程。

这个结果代码只是一个暂时的状态,只要你的另一个线程调用AUGraph(有锁)就完成了。

在我的情况下,我刚开始的AUGraph ,这是新的,刚刚创build。 我怎样才能debugging的情况下,这可能是什么潜在的问题?