2011-05-30 66 views
1

我有一个自定义选项卡窗口小部件,其许多视图的背景CALayer对象占用太多的内存。我正在考虑为后台标签发布视图,但如果我只是要求框架发布支持CALayer(这是大部分内存正在发生的地方),并让它按需重新创建,那将会更简单。那可能吗?释放内存的回收层以回收内存?

嵌套视图层次结构比平坦视图层次结构消耗更多的内存,因为有更多的CALayer对象,大多数是相同的像素?如果100 x 100视图占用X内存,是否意味着100 x 100子视图的100 x 100视图大约需要2倍?

为什么Apple没有使用AppKit模型,程序员控制哪些视图支持Core Animation图层?这会消耗更少的内存,这与iOS OS相比在iOS上很少。谢谢。

回答

0

所有视图在iOS上都是分层支持的,您无法控制这一点。

您应该只是释放不活动的视图并根据需要重新加载它们。

原因视图在iOS上是分层支持的,这样GPU就可以完成大部分繁重的工作。这大大降低了CPU的负载,使CPU可以用于实际工作或被节流下来以节省电力。

+0

是的,我明白这一点。我试图说,当给定视图的子视图不是独立的动画或移动,并且都是不透明的时,是否需要为每个视图分别设置不同的图层,而不是仅为父视图创建一个图层?无论如何,谢谢你的回答。 – 2011-06-01 04:29:42