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