TGViewer
Мобильный трудоголик Мобильный трудоголик @hardworkerit · 1.65K subscribers
Post #450 1.07K
🔢 iOS 27: CADisplayLink для UIWindowScene.

В iOS 27 компания Apple изменила подход к работе с CADisplayLink. Раньше его создавали через UIScreen. Теперь через UIWindowScene. Изменение выглядит небольшим, но оно меняет модель владения и делает код более предсказуемым в многоконных приложениях.


В чем разница между Timer и CADisplayLink:

Timer и CADisplayLink решают разные задачи. Timer привязан к интервалам времени, он срабатывает по расписанием цикла выполнения. CADisplayLink синхронизирован с частотой обновления экрана. Это принципиальная разница.

Timer подходит для задач, где не важен каждый кадр. Обратный отсчет, периодический опрос сервера, обновление данных в фоне. CADisplayLink для визуальных задач, где важна плавность и синхронизация с экраном. Анимации, игры, рендеринг, физика.

Если попытаться использовать Timer для визуального движения, он будет менее плавным, потому что Timer не учитывает момент обновления кадров. Он просто срабатывает, когда приходит время.


Что нового в iOS 27:

В iOS 27 компания Apple добавила новый способ создания CADisplayLink прямо через UIWindowScene. Старый метод через UIScreen объявлен устаревшим.

// Новый способ в iOS 27
if let scene = view.window?.windowScene {
displayLink = scene.displayLink { link in
print(link.targetTimestamp - link.timestamp)
}
displayLink?.add(to: .main, forMode: .common)
}


Это логичный шаг. В многоконных приложениях, особенно на iPad с Stage Manager, одна сцена активна, другая нет, третья вообще на другом дисплее. Глобально думать про экран становится неудобно. Проще сказать: «вот конкретная UIWindowScene и вот работа, которая должна синхронизироваться с ее дисплеем».


Почему это важно:

Это улучшает модель владения. Если анимация или рендеринг принадлежат конкретному окну, то и CADisplayLink должен жить рядом с этим окном. Так проще управлять жизненным циклом, а не продолжать делать работу для сцены, которая уже неактивна.

В многоконных приложениях становится проще думать о поведении каждой сцены отдельно. Одна сцена может обновляться с частотой 120 Гц, другая с 60 Гц. CADisplayLink, привязанный к конкретной сцене, автоматически подстраивается под ее дисплей.


Когда использовать CADisplayLink, а когда Timer:

Главное, что стоит запомнить:

🔵CADisplayLink нужен, когда работа связана с визуальным отображением и важна плавность. Пользовательские анимации, прогресс-бары, игровые циклы, синхронизация с рендерингом.

🔵Timer для всего остального. Обратный отсчет, обновление данных по расписанию, фоновые задачи. Он проще, дешевле и не требует такой аккуратной работы с жизненным циклом.

CADisplayLink не замена Timer. Это специализированный инструмент для визуальных задач.


🔗 Читать подробнее


💡 Вывод:

CADisplayLink в iOS 27 стал более сцено-ориентированным. Это небольшое API-изменение, но важное архитектурное решение. Оно отражает вектор развития UIKit в сторону многоконных приложений.

Для разработчиков это значит, что визуальную работу теперь удобнее привязывать к конкретной сцене, а не к глобальному экрану. Проще управлять жизненным циклом, проще думать о многоконном поведении.

Но главное правило остается прежним: CADisplayLink - это не универсальный таймер. Это инструмент для визуальных задач, где важна синхронизация с кадрами. Для всего остального есть Timer.


Подписаться на канал:
➡️ Telegram | Max
  • 👍 7
  • ❤ 3
  • 🔥 1
  • 🙏 1
More from @hardworkerit
  1. Sep 29, 2026🔢 Управление тулбарами на iPhone Duo. На iPhone Duo элементы управления навигацией, дейст…
  2. Sep 27, 2026🔢 Новые возможности Hashable в Swift 6.4 В Swift 6.4 добавили Hashable для нескольких тип…
  3. Sep 25, 2026🔢 Приватные свойства больше не ломают memberwise инициализатор в Swift 6.4 Swift автомати…
  4. Sep 24, 2026👨‍💻 Почему разработчики ненавидят своих менеджеров. Всем привет! Сегодня хочу разобрать…
  5. Sep 22, 2026🔢 Релиз Swift 6.4: главные изменения для разработчиков. Swift 6.4 вышел. Это обновление п…
  6. Sep 20, 2026📱 Официальный симулятор iPhone Duo уже доступен в Xcode 27.1 В бета-версии Xcode 27.1 поя…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →