Как заменить этот 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
имеет такое же поведение по умолчанию.