为什么NSCell会弃用,为什么它首先被引入?

时间:2014-10-30 01:15:27

标签: macos appkit

AppKit Release Notes for OS X v10.10的“NSCell逐渐弃用”部分说:

  

Mac OS X 10.10向最终弃用单元格迈出了新的一步。

我听说NSCell是出于性能原因而引入的。但那为什么它会弃用呢?

1 个答案:

答案 0 :(得分:11)

NSCell是出于性能原因在NeXTSTEP时代在具有几兆内存的机器上引入的,当每个表格单元格有一个完整的NSView是一个负担不起的奢侈品。在iOS中,通过使用视图而不是单元格大大简化了表视图。在OS X 10.7中,Apple开始向同一个方向移动OS X,我们终于到了那里。

NSCell一直是OS X的主要麻烦,其中最重要的是它使用NSCopyObject()one of the most annoying functions NeXT ever wrote。它还提供了一个文本编辑器(NSText),它在所有文本输入视图之间共享。如果您不小心,当视图通过此共享对象相互干扰时,这可能会导致混乱的错误。控件和单元之间的分离和重复一直是OS X开发人员之间混淆的原因。

曾几何时,这是必要的,但那些日子早已过去。我们不再需要担心"完整的NSView子类的开销"在大多数情况下。特别是因为添加CALayer使得绘制它们的速度更快。