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
позволило сделать их намного быстрее.