尝试调用audioProcessStartWithAudioSource时出现死锁:错误:在gracenote中

尝试调用audioProcessStartWithAudioSource时出现死锁:错误:在gracenote中,ios,gracenote,Ios,Gracenote,我尝试创建能够识别音乐曲目的应用程序,但每次我调用block时: dispatch_async(self.internalQueue, ^{ self.gnAudioVisualizeAdapter = [[GnAudioVisualizeAdapter alloc] initWithAudioSource:self.gnMic audioVisualizerDelegate:self]; [self.gnMusicIDStream audioProcessStartWithAudio

我尝试创建能够识别音乐曲目的应用程序,但每次我调用block时:

dispatch_async(self.internalQueue, ^{
   self.gnAudioVisualizeAdapter = [[GnAudioVisualizeAdapter alloc] initWithAudioSource:self.gnMic audioVisualizerDelegate:self];
  [self.gnMusicIDStream audioProcessStartWithAudioSource:(id )self.gnAudioVisualizeAdapter error:&musicIDStreamError];
});
我收到关于死锁的错误通知

2014-10-20 13:29:59.954 BTTest[2193:595084]-[\uu NSArrayM enqueueObj:]:发送到实例0x17804f210的未识别选择器

2014-10-20 13:29:59.976 BTTest[2193:595084]***-[NSCondition lock]:死锁('(null)]

2014-10-20 13:29:59.977 BTTest[2193:595084]***打开_NSLockError()进行调试

我只是将示例sdk中的几个方法复制并粘贴到fresh项目中。有人在iOS上有类似的问题吗

编辑:
经过几个小时的挖掘,我找到了解决方案:将-ObjC添加到“其他链接器标志”中,现在没有关于死锁的信息。。。只需“Error:0xffffffceError:0xffffd591”

如编辑和注释中所述,编译器需要
-ObjC
链接器标志来包含类别
NSMutableArray+NSQueue.h


代码本身不是死锁,而是调用
audioProcessStartWithAudioSource::
启动同步执行的循环,除非出现错误,否则不会返回。

因此需要添加
-ObjC
链接器标志,以强制编译器添加类别
NSMutableArray+NSQueue.h
。然而,你在这条线上仍然会遇到僵局吗?我也有同样的问题,在
audioProcessStartWithAudioSource
上似乎出现了死锁。否,添加此标志后,所有功能都按预期工作。控制台上的其他错误是由于错误的音频会话管理造成的。我能很快修复它。请阅读系统记录的第二行。它清楚地表明检测并报告了死锁。第二行发生在无法识别的选择器导致异常之后。一旦通过添加
-ObjC
解决了这个问题,您仍然会看到日志语句发生吗?否,添加标志后它会消失。我引用了你的回答,你在回答中说“代码本身不是死锁的”。现在这个问题解决了。