为什么不想要图层支持的视图

时间:2012-07-26 05:54:53

标签: cocoa core-animation nsview

我主要来自iOS开发。

为什么您不想让所有NSView的图层都支持?是否有某种表现受到打击?有什么不同于iOS,其中每个UIView都是图层支持的?

1 个答案:

答案 0 :(得分:7)

在iOS上,图形硬件基于平铺渲染。图层支持视图配置与硬件将内容复合到屏幕的方式非常接近。

在Mac OS上,硬件不使用平铺渲染。当您请求图层支持的视图时,会增加程序的内存占用量。在Mac OS上,屏幕通常是双缓冲的,因此任何时候都有2个屏幕副本。我相信图层支持的视图也是双缓冲的(可能是错误的),所以你使用了相当多的内存。当您打开图层支持的视图时,可以递归地为视图的所有子视图执行此操作。如果你有大量重叠子视图的视图,你可以大大提高内存需求。

我不知道,但我怀疑,在Mac OS层支持的视图渲染速度比非图层支持视图稍慢。渲染性能有很多因素,因此可能取决于具体细节。

我建议你自己做一些测试,包括视频内存使用和真实世界的性能。 Xcode和仪器中的新OpenGL工具可以让您跟踪视频内存的使用情况。 (它与主存不同。)