NSView的wantLayer表现

Joh*_*ght 4 macos cocoa nsview appkit

如果我创建一个空白的 Mac XCode 项目并NSView在主窗口中并排布局 500 个简单对象,它的加载速度会非常快。如果我wantsLayer=YES对每个子视图进行设置,性能会急剧下降几秒钟。为什么从概念上讲是这样的?看起来层会比常规的旧 NSView 更快而不是更慢。

Jos*_*zzi 5

通过分层支持如此多的视图,您给系统带来了更多的工作要做。图层支持允许图形加速(用于绘图),但它给布局之类的事情增加了一些开销,更不用说仅仅创建它们并将它们放在屏幕上。如果使用得当,其实并不是什么大问题。

通常,如果您要同时在屏幕上管理如此多的“事物”,那么您将拥有一个层支持的托管视图来管理其自己的子层树。“但是基于视图的表视图呢?” 你问。我说,诡计,诡计!表视图实际上并不保留它们管理的所有单元格视图;他们有效地重用它们,仅保留足以代表屏幕上和/或周围动画的内容。

所以我想说这并不是一个真正的问题,因为从一开始就抛出 500 多个图层支持的视图来进行布局和绘图并不是一个特别好的方法。:-)