アプリにカスタム ビュー (から継承UIView
) があります。カスタム ビューのオーバーライド
- (void) drawRect:(CGRect) rect
問題はdrawRect:
、iPad 2 よりも iPad 3 の方が何倍も長く実行されることです (iPad 3 では約 0.1 秒、iPad 2 では 0.003 秒)。約30倍遅いです。
基本的に、私はいくつかの事前に作成されたレイヤーを使用して、drawRect:
. 最後の電話
CGContextDrawLayerAtPoint(context, CGPointZero, m_currentLayer);
ほとんどの時間がかかります ( の合計時間の約 95% drawRect:
)
何がそんなに遅くなっているのか、そしてその原因をどのように修正すればよいのでしょうか?
アップデート:
直接関与するスレッドはありません。私はsetNeedsDisplay:
あるスレッドを呼び出し、drawRect:
別のスレッドから呼び出されますが、それだけです。同じことがロックにも当てはまります (ロックは使用されません)。
タッチに応じてビューが再描画されます (塗り絵アプリです)。iPad 2 では、画面のタッチと更新の間に妥当な遅延が発生します。iPad 3でも同じことを達成したい。