Как заменить этот NSTimer на CADisplayLink?

Я понимаю, что CADisplayLink лучше подходит для моего текущего проекта, но я не могу понять, как реализовать CADisplayLink и заменить мой NSTimer.

ниже приведен код моего NSTimer

Movement = [NSTimer scheduledTimerWithTimeInterval:0.002 target:self selector:@selector(BarMoving)       userInfo:nil repeats:YES];

Как я могу создать CADisplayLink, который будет выполнять ту же функцию, но более эффективно?

1 ответ

Решение

Создать вещь:

_displayLink = [CADisplayLink displayLinkWithTarget:self 
                   selector:@selector(BarMoving)];

Запустите его:

[_displayLink addToRunLoop:[NSRunLoop mainRunLoop]
    forMode:NSDefaultRunLoopMode];

... это заставит вашу ссылку показа звонить BarMoving в главном цикле выполнения (который связан с основным потоком и, следовательно, с основной очередью), когда этот цикл выполнения находится в режиме по умолчанию. Таким образом, такие вещи, как когда пользователь прокручивает палец вниз, вид прокрутки, приостанавливает ваш таймер. NSTimer имеет такое же поведение по умолчанию.

Другие вопросы по тегам