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

Posted

技术标签:

【中文标题】NSOutlineView 和 NSTreeController 可以处理数千个对象吗?【英文标题】:Can NSOutlineView and NSTreeController handle thousands of objects? 【发布时间】:2010-11-11 16:13:36 【问题描述】:

背景

带有 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 的问题。有谁知道这是否已“修复”?

如果有任何建议,我将不胜感激。

【问题讨论】:

【参考方案1】:

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

更新:2011 年 9 月

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

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

【讨论】:

以上是关于NSOutlineView 和 NSTreeController 可以处理数千个对象吗?的主要内容,如果未能解决你的问题,请参考以下文章

NSTableView 和 NSOutlineView 拖放

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

NSOutlineView 控制高亮和缩进

关于 NSOutlineView 和 WriteItem |拖放问题

NSTableView 和 NSOutlineView 在 tab 键上编辑

更新 NSOutlineView 的内容