優化無響應(核心數據)應用程序在非響應(OSX)應用程序中存在實際問題。使用大約3K(核心數據)對象時,應用程序在啓動和保存過程中以及添加新的託管對象時會凍結。爲OSX
當我深入調用樹,使用(儀器)時間剖析器,大部分時間似乎花費排序陣列控制器。在啓動過程中,有一半時間用於NSUndoManager,它在陣列控制器正在設置其內容時觀察通知...
是否在數組控制器正在進行排序而新的託管對象正在實例化?我是否需要暫停排序? NSUndoManager可能是罪魁禍首嗎?
更重要的是,人們如何去分析這樣的事情呢?這很可能是我進行了某種指數排序,我的意思是,當一個數組控制器自行排序時,其他幾個數組控制器可能會不必要地重新排序。
我使用的數據模型相當廣泛。另外,我在2個.xib文件中有大約30個ish數組控制器,其中一些控制器管理相同的類類型。
Marcus Zarra's book關於核心數據已經非常翔實,在這方面尤其是關於優化核心數據的章節。
另外,Matt Gallagher的this article非常令人印象深刻,雖然我遇到的問題可能與需要優化的代碼無關。
任何和所有的提示,歡迎,我拉我的頭髮在這裏。你能指點我一些教程或書籍,可以幫助我嗎?謝謝。
你需要撤消管理器嗎?你總是可以將它設置爲「無」,看看它是否有所改進。 。 。 – deanWombourne
好主意。 我檢查了[撤消架構文檔](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/UndoArchitecture/UndoArchitecture.html#//apple_ref/doc/uid/10000010-SW1),但我並不清楚在創業期間的哪一點,我應該這樣做。 – Fnord23
我將託管對象上下文的NSUndoManager設置爲nil,都位於應用程序委託的init和awakeFromNib中。兩種情況都沒有真正的改善。 Time Profiler不會顯示NSUndoManager再被涉及。 – Fnord23