优化无响应(核心数据)应用程序在非响应(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