Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos NSView wantsLayer的性能_Macos_Cocoa_Nsview_Appkit - Fatal编程技术网

Macos NSView wantsLayer的性能

Macos NSView wantsLayer的性能,macos,cocoa,nsview,appkit,Macos,Cocoa,Nsview,Appkit,如果我创建一个空白的macxcode项目,并在主窗口中并排布局500个简单的NSView对象,它的加载速度会非常快。如果我在每个子视图上设置wantsLayer=YES,性能会显著下降几秒钟。为什么在概念上是这样?层似乎比常规的旧NSView更快而不是更慢。通过支持这么多视图的层,您为系统提供了更多的工作。图层背衬允许图形加速(用于绘图),但它会给布局之类的事情增加一些开销,更不用说仅仅创建它们并将它们放在屏幕上了。如果使用得当,这其实不是什么大问题 通常,如果您一次要在屏幕上管理这么多“东西”

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

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

通常,如果您一次要在屏幕上管理这么多“东西”,您将拥有一个以层为基础的托管视图,该视图管理自己的子层树。“但是基于视图的表视图呢?”你问道。诡计,诡计,我说!表视图实际上并不保留它们管理的所有单元格视图;它们有效地重用它们,只保留足够的内容来表示屏幕上的内容和/或周围的动画


因此,我想说,这不是一个真正的问题,因为它不是一个特别好的方法,抛出500+层备份视图布局和绘图开始。:-)

仪器应该告诉你:/好主意,我看了一眼,什么都看不懂。我的意思是,我知道它运行得非常慢,我希望在调用堆栈中找到一些东西来说明原因,但无法。我想知道是否有人从概念上知道答案。这不是我正在考虑的方法,这只是我试图理解的方法。你搞定了。今天早上工作的人也解释了这一点。谢谢