4

親/子の NSManagedObjectContext セットアップを使用している OSX アプリがあります。子 MOC がNSPrivateQueueConcurrencyTypeあり、私が主に使用しているものです。親は次のように設定されていますNSMainQueueConcurrencyType

performBlockAndWaitメインスレッドから呼び出されると同時にバックグラウンドスレッドから子コンテキストを呼び出すと、デッドロックが発生します – semaphore_wait_trap. デバッガーを一時停止すると、両方のスレッドが停止していることがわかりますperformBlockAndWait

どうすればこれを回避できますか? このメソッドはまさにこの状況向けに設計されており、コンテキストのプライベート キューにブロックをキューに入れ、適切に戻るだけだと思いましたか?

4

2 に答える 2

2

これを回避するには、シリアル キューを作成し、これを介してすべての performBlock 呼び出しを実行して、互いに混乱しないようにしました。正直なところ、これが良い習慣かどうかはわかりませんが、私の特定の状況の問題は解決しました。

于 2013-07-24T04:25:02.183 に答える