Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
Iphone 使用大量CALayer对象时优化性能的提示?_Iphone_Performance_Ipad_Core Animation_Calayer - Fatal编程技术网

Iphone 使用大量CALayer对象时优化性能的提示?

Iphone 使用大量CALayer对象时优化性能的提示?,iphone,performance,ipad,core-animation,calayer,Iphone,Performance,Ipad,Core Animation,Calayer,我的应用程序架构/层次结构如下所示: UIView UIView CALayer | CALayer | CALayer | CALayer .... (and a few hundred more) 这些CALayer实例表示快速倒计时时钟点阵显示中的小方点。我正在尽可能经常地每秒更新他们的背景色。实际上我想要的是每秒60次,但我想这个设备不能做到 我有一个计时器,它经常调用一个方法。然后,该方法迭代这些像素点层,并将其背景色设置为当前所需的任何颜色 您有哪些优化技巧来提高性能 我想到一件事

我的应用程序架构/层次结构如下所示:

UIView
UIView
CALayer | CALayer | CALayer | CALayer .... (and a few hundred more)
这些CALayer实例表示快速倒计时时钟点阵显示中的小方点。我正在尽可能经常地每秒更新他们的背景色。实际上我想要的是每秒60次,但我想这个设备不能做到

我有一个计时器,它经常调用一个方法。然后,该方法迭代这些像素点层,并将其背景色设置为当前所需的任何颜色

您有哪些优化技巧来提高性能

我想到一件事:

1)告诉每个CALayer它是不透明的


我想还有很多优化的可能性。也许不是像我这样的扁平层次,而是一个很深的层次,每个CALayer都是另一个CALayer的子层?不确定。

难道你不能简单地忘记图层,然后用石英渲染每帧图像吗?

我认为这太慢了。我以前试过这样的东西,结果很糟糕-drawRect像一只100岁的蜗牛一样慢。@BugAlert:你在投机。回到@zoul的建议,如果有问题,找出问题所在。如果它有那么慢,一个简单的中断和堆栈跟踪就会告诉你这个问题。我想说,画一堆填充的矩形不会那么慢。但正如迈克所说,在性能问题上,你必须首先分析,然后再思考。在最坏的情况下,你可以下载到OpenGL(如果你的应用程序的其他部分可能的话)。我从以前的实验中知道-drawRect:动画非常慢。