我的应用程序中有一个自定义视图(继承自UIView
)。自定义视图覆盖
- (void) drawRect:(CGRect) rect
问题是:iPad 3 上的drawRect:
执行时间是 iPad 2 上的许多倍(iPad 3 上大约 0.1 秒,iPad 2 上大约 0.003 秒)。它慢了大约 30 倍。
基本上,我使用一些预先创建的图层并将它们绘制在drawRect:
. 最后一次通话
CGContextDrawLayerAtPoint(context, CGPointZero, m_currentLayer);
花费大部分时间(大约 95% 的总时间drawRect:
)
是什么让事情变得如此缓慢,我应该如何解决这个原因?
更新:
没有直接涉及的线程。我确实调用setNeedsDisplay:
了一个线程并drawRect:
从另一个线程调用,但就是这样。锁也是如此(没有使用锁)。
视图被重绘以响应触摸(它是一个着色书应用程序)。在 iPad 2 上,我在触摸和屏幕更新之间得到了合理的延迟。我想在 iPad 3 上达到同样的效果。