4

ここCADisplayLinkでどのようにdrawRect動作するかについてより一般的な質問をしましたが、その質問にはまだ答えがないので、より具体的な質問をすることにしました。実行に約10msかかるメソッド?drawRect

私のアプリでは、次のCADisplayLinkように構成します。

displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(update)];
[displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];

updateメソッドは、カスタム UIView を呼び出すだけです(setNeedsDisplayスキップされたフレームをチェックするだけでなく):

- (void)update
{
    static CFTimeInterval timestamp = 0;

    // check for skipped frame
    CFTimeInterval newTimestamp = displayLink.timestamp;
    if ((newTimestamp - timestamp) > (displayLink.duration * (displayLink.frameInterval + 0.5)))
        NSLog(@"Frame skipped!");
    timestamp = newTimestamp;

    [myView setNeedsDisplay];
}

drawRectこれは、4 ミリ秒または 5 ミリ秒以上かかるとすぐにフレームをスキップし始めます。私の目的では、最大で 10 ~ 11ms 程度必要ですが、1/60fps = 16.7ms で問題ないと考えました。

誰かがこれを達成しましたか?私は何を間違っていますか?

4

1 に答える 1