По порядку Senior Swift Concurrency обновлено

Порядок миграции модуля на Swift 6

Вопрос

Расставьте шаги перевода модуля на языковой режим Swift 6.

Попробуйте сами

Расставьте шаги по порядку стрелками.

  1. 1
    Переключить модуль на режим Swift 6 и довести ошибки до нуля
  2. 2
    Для старых зависимостей без аннотаций использовать @preconcurrency import
  3. 3
    Пометить UI-типы @MainActor, а общее изменяемое состояние спрятать в акторы
  4. 4
    Сделать модели и DTO Sendable, убрать передачу изменяемых классов между потоками
  5. 5
    Включить строгие проверки конкурентности (complete) в режиме Swift 5 и собрать список предупреждений
Показать ответ и разбор

Коротко

Миграция идёт помодульно и начинается с предупреждений, а не ошибок. Сначала изоляция UI и общих ресурсов, потом Sendable-модели, затем временные послабления для чужого кода, и только в конце переключение режима.

Правильный порядок

  1. 1
    Включить строгие проверки конкурентности (complete) в режиме Swift 5 и собрать список предупреждений
  2. 2
    Пометить UI-типы @MainActor, а общее изменяемое состояние спрятать в акторы
  3. 3
    Сделать модели и DTO Sendable, убрать передачу изменяемых классов между потоками
  4. 4
    Для старых зависимостей без аннотаций использовать @preconcurrency import
  5. 5
    Переключить модуль на режим Swift 6 и довести ошибки до нуля

Разбор

Миграция идёт помодульно и начинается с предупреждений, а не ошибок. Сначала изоляция UI и общих ресурсов, потом Sendable-модели, затем временные послабления для чужого кода, и только в конце переключение режима.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.