非常に応答しない(OSX)アプリで実際の問題が発生しています。約 3K (Core Data) オブジェクトを使用すると、起動時と保存時、および新しい管理対象オブジェクトの追加時にアプリがフリーズします。
(Instruments) Time Profiler を使用して呼び出しツリーを掘り下げると、ほとんどの時間が配列コントローラーの並べ替えに費やされているようです。起動中、時間の半分は NSUndoManager に費やされます。NSUndoManager は、アレイ コントローラーがコンテンツを設定している間に通知を監視します...
新しい管理対象オブジェクトがインスタンス化されている間、アレイ コントローラはソートされていますか? ソートを保留にする必要がありますか? NSUndoManager が原因でしょうか?
さらに重要なことは、このようなものを分析するにはどうすればよいのでしょうか? ある種の指数関数的な並べ替えが行われている可能性が非常に高いです。つまり、1 つの配列コントローラーが自分自身を並べ替えると、他のいくつかの配列コントローラーも不必要に再並べ替えを開始する可能性があります。
私が使用しているデータモデルはかなり広範囲です。また、2 つの .xib ファイルに約 30 個のアレイ コントローラーがあり、そのうちのいくつかは同じクラス タイプを管理しています。
Core Data に関するMarcus Zarra の本は、特に Core Data の最適化に関する章で、非常に有益です。
また、 Matt Gallagher によるこの記事は非常に印象的ですが、私が抱えている問題はおそらく最適化が必要なコードとは関係ありません。
どんなヒントでも大歓迎です。私はここで髪を引っ張っています。私を助けることができるチュートリアルや本をいくつか教えてもらえますか? ありがとう。