1

我尝试创建可以识别音乐曲目的应用程序,但是每次我调用块时:

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]-[__NSArrayM enqueueObj:]:无法识别的选择器发送到实例 0x17804f210

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

2014-10-20 13:29:59.977 BTTest[2193:595084] *** 中断 _NSLockError() 以进行调试。

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

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

4

1 回答 1

1

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

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

于 2014-10-31T23:13:06.853 回答