4

我主要来自 iOS 开发。

为什么你不想让你所有的 NSView 层都被支持呢?是否有某种性能影响?与每个 UIView 都支持层的 iOS 有什么不同?

4

1 回答 1

8

在 iOS 上,图形硬件基于平铺渲染。layer-backed-view 配置与硬件将内容合成到屏幕的方式非常匹配。

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

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

我建议您自己进行一些测试,包括视频内存使用和实际性能。Xcode 和仪器中的新 OpenGL 工具将让您跟踪视频内存使用情况。(它与主存储器不同。)

于 2012-07-26T13:02:51.417 回答