NSOutlineView和NSTreeController可以处理数千个对象吗?

时间:2010-11-11 16:13:36

标签: cocoa core-data cocoa-bindings nsoutlineview nstreecontroller

背景

  • Snow Leopard 10.6.4上带有GC的核心数据应用程序

  • 我使用绑定NSTreeController支持NSOutlineView

  • 我在后台NSOperation子类上创建了数十个对象,保存并使用mergeChangesFromContextDidSaveNotification合并到主上下文中,所有这些都按照Apple文档中的建议

  • 主要上下文包含数千个对象

问题

我遇到了很多性能问题。有时合并可能需要几秒钟才能锁定我的UI。它似乎也使用了相当多的内存。

我最近发现others have had this issue too。我开始认为这是对绑定的NSTreeController / NSOutlineView组合的限制。

问题

  1. NSOutlineView和NSTreeController能否有效处理数千个对象?

  2. This post似乎暗示这是10.6.2引用rdar:// 7139579的问题。有谁知道这是否已经“修复”了?

  3. 我非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

底线?我想我需要以通常的方式优化我的应用程序。此外,有很多KVO通知被解雇,因此可能显示较少的数据。当我加快了我的应用程序时,我可能会在这里进一步报告。

更新:2011年9月

自从这个问题发布以来,我学到了很多东西。我的一个重要教训是,有时候,你必须放弃你想要的东西,并接受这将是一场设计交易。

我正在重新设计应用程序的外观以加快速度。我知道,NSTreeController最多只能处理几百个条目。成千上万的条目意味着用户无论如何都会感到困惑。我重新设计了我的UI更简单。而现在我正在使用表视图,速度要快得多。