頻繁に永続的にフリーズするアプリがあります。これが発生した場合、Xcode で [一時停止] をクリックすると、メイン スレッドでは、MOC でフェッチ リクエストを実行するコード行で常に停止していることがわかります。__psynch_mutexwait + 17
左側のスレッド リストにも出力が表示されます。これにより、アプリがデッドロックに陥っているか、何らかの理由で MOC がブロックされていると思われます。
私の最初の直感は、メイン スレッド以外でフェッチ リクエストを実行している可能性があるので、ログを記録して確認したのですが、そうではありませんでした。すべてのフェッチはメイン スレッドで行われます。
ここでブロックしている可能性のあるものを追跡するにはどうすればよいですか? スタック トレースで他に探すべきものはありますか?
メインスレッドで取得したオブジェクトのプロパティを他のスレッドで設定しているのは問題ですか? つまり、メインでフェッチobjectA
しますが、それを別のスレッドに渡し、次のようにしobjectA.someNumber = [NSNumber numberWithInt:2]
ますか?