背景
带有GC的Snow Leopard 10.6.4上的Core Data应用程序
我有一个使用绑定的NSTreeController支持的NSOutlineView
我正在后台NSOperation子类上创建数十个对象,保存并使用mergeChangesFromContextDidSaveNotification
合并到主上下文中,所有操作均符合Apple文档中的建议
主要上下文有数千个对象
问题
我遇到了很多性能问题。有时合并可能需要几秒钟,这会锁定我的UI。它似乎还占用了大量内存。
我最近发现了others have had this issue too。我开始认为这是对NSTreeController / NSOutlineView与绑定的限制。
问题
NSOutlineView和NSTreeController可以有效地处理数千个对象吗?
This post似乎暗示这是在10.6.2上引用rdar:// 7139579的问题。有人知道这是否已“解决”吗?
我将不胜感激任何建议。
最佳答案
底线?我认为我需要以通常的方式优化我的应用程序。另外,还有很多KVO通知被触发,因此显示较少的数据是可行的方法。当我加快了我的应用程序的运行速度后,我可能会在这里进一步报告。
更新:2011年9月
自发布此问题以来,我学到了很多东西。我最大的经验之一就是,有时候,您必须放弃想要的东西,并接受这将是一种设计折衷。
我目前正在重新设计应用程序的外观,以使其更快。我了解到,NSTreeController最多只能处理数百个条目。成千上万的条目意味着无论如何用户都将感到困惑。我已经重新设计了UI,使其更加简单。现在我改用表格视图,这要快得多。
关于cocoa - NSOutlineView和NSTreeController可以处理数千个对象吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4156519/