我知道 Apple 不赞成使用NSCell
(NSView
请参阅 AppKit 10.10 发行说明)。以前建议NSCell
在需要许多控件时出于性能原因使用。
我花了相当多的时间来实现一个需要许多子视图的自定义控件,并且使用 NSView 类型的子视图的性能并不好。请参阅相关的 stackoverflow 讨论 就一个窗口中可以拥有的 NSView 类型实例的数量而言,实际限制是什么?我正在努力处理 1000-2000 个内存对象(这似乎并不多)。这种限制的真正原因是什么?
上面让我感到困惑的一件事是基于视图的 Cocoa NSTableViews。您可以创建超过 1000-2000 个单元格的 tableViews,而且它们似乎没有很差的加载和滚动性能?如果每个单元格都是一个 NSView 那么这是如何实现的呢?
如果有实际限制,那么当 Apple 说他们不赞成使用 NSCell 时,他们在想什么?我确信他们知道某些控件需要大量的子视图。
此外,(可能已过时)Apple Developer Guide 对 NSView 和 NSCell 之间的区别给出了以下解释,我需要进一步解释:
“因为单元格比控件轻,就继承的数据和行为而言,使用多单元格控件而不是多个控件更有效。”
继承的数据:如果正在使用数据,这肯定只会导致“膨胀”=>并且只会在您需要时使用它?
继承的行为:您不在类/对象中使用的方法肯定不会造成任何开销?
轻量级 NSCell 与重量级 NSView 之间的真正区别是什么,除了它似乎被传统地接受? (我真的很想知道。)