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 ロック]: デッドロック ('(null)')

2014-10-20 13:29:59.977 BTTest[2193:595084] *** _NSLockError() でブレークしてデバッグします。

サンプル SDK から新しいプロジェクトにいくつかのメソッドをコピー & ペーストするだけです。iOSで同様の問題が発生した人はいますか?

編集: 数時間掘り下げた後、解決策を見つけました:-ObjCを「他のリンカーフラグ」に追加すると、デッドロックに関する情報がなくなりました...「エラー:0xffffffceError:0xffffd591」だけです

4

1 に答える 1

1

編集とコメントで述べたように-ObjC、コンパイラにカテゴリを含めるにはリンカーフラグが必要ですNSMutableArray+NSQueue.h

コード自体はデッドロックではなく、audioProcessStartWithAudioSource::同期的に実行され、エラーが発生しない限り返されないループの開始への呼び出しです。

于 2014-10-31T23:13:06.853 に答える