Ответ
CADisplayLink — это таймер, синхронизированный с частотой обновления экрана (VSync). Он вызывает целевой метод каждый раз, когда экран готов к отрисовке нового кадра (обычно 60 или 120 Гц).
Основное применение: создание плавных анимаций, синхронизация игрового цикла или любых операций, которые должны выполняться в ритме с отрисовкой.
Пример использования в Swift:
class AnimationController {
private var displayLink: CADisplayLink?
func startAnimation() {
displayLink = CADisplayLink(target: self, selector: #selector(updateFrame))
displayLink?.add(to: .current, forMode: .common)
}
@objc private func updateFrame() {
// Обновление состояния анимации на каждом кадре
}
func stopAnimation() {
displayLink?.invalidate()
displayLink = nil
}
}
Ключевые свойства и особенности:
preferredFramesPerSecond— позволяет ограничить частоту вызовов (например, для экономии энергии).isPaused— временная приостановка таймера.timestampиduration— предоставляют точное время кадра для расчетов.- Работает в связке с
RunLoop. - Более требователен к энергии, чем
Timer, так как привязан к частоте обновления дисплея.