Вступить в клуб →
средняявопросSwift Concurrency: Task, акторы и MainActor

Разбор прайса на 40 МБ в Task {} всё равно замораживает интерфейс

@MainActor
final class ImportViewModel: ObservableObject {
    @Published var items: [PriceItem] = []

    func importFile(_ data: Data) {
        Task {
            let parsed = PriceParser.parse(data)   // синхронно, ~3 секунды
            items = parsed
        }
    }
}

Разработчик ожидал, что Task уведёт работу в фон, но экран на 3 секунды перестаёт реагировать. Почему?

  • Task унаследовал главный актор, разбор идёт на нём
  • Task всегда выполняется на главном потоке
  • Разбор тормозит из-за присваивания @Published
  • Task стартует только после отрисовки кадра

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела