And*_*ang 3 macos cocoa objective-c nstableview nscell
这可能是一般性讨论,而不是真正的问题.当我开始使用NSTableView和NSOutlineView时,我想:哦,NSView的一个实例几乎可以做任何事情.所以我在我的委托和dataSource中返回一个NSView实例.
但是它没有用,我意识到NSTableView会安排直接从NSObject继承的NSCell实例.
我意识到理解为什么Cocoa构建基于NSCell但NSView的NSTableView可能很重要.但很少有文件清楚地解释清楚.因此,我转向Stackoverflow.有谁知道吗?提前谢谢你!
您可以在检查器中切换到基于NSTableView或NSOutlineView的视图

基于单元格的单元格的原因是,如果您只想显示字符串.如果您只想显示一个字符串,那么为每个单元格初始化视图将浪费资源.它基本上是关于内存控制与您需要显示的内容.
@d00dle 的答案展示了如何使用 NSView 支持的表视图,但它没有回答为什么 NSTableViews 历史上首先使用 NSCells 的问题。
答案是 NSView 是很重的对象并且管理起来很昂贵。NSTableViews 通常需要许多行和列的“类似视图”的东西,如果你天真地将它们全部添加为实际的 NSViews,你就无法维护响应式 UI。
这反映在苹果为支持 NSView 支持的表格和大纲视图而添加的技巧中;它创建有限数量的 NSView 并以巧妙的方式回收它们,以减少在任何给定时刻使用的 NSView 总数。