TGViewer
Мобильная разработка Мобильная разработка @mobi_dev · 13.2K subscribers
Post #4741 1.03K
Как использовать @MainActor для интерфейса в Swift

@MainActor привязывает класс, метод, свойство или замыкание к глобальному актору, задачи которого идут в главном потоке. В конкурентном коде так компилятор проверяет контекст обновлений UI вместо ручных вызовов DispatchQueue.main.async.

В Swift 6.2 новые проекты Xcode 26 по умолчанию изолируют код приложения главным актором. Тяжёлые вычисления можно вынести из главного актора через nonisolated или @concurrent, чтобы не задерживать интерфейс.

В режиме Swift 5 остаётся ловушка: синхронный @MainActor-метод из неизолированного контекста может выполниться в потоке вызывающего кода. Swift 6 ловит большинство таких случаев при компиляции. Разбор SwiftLee сравнивает MainActor.run с Task { @MainActor in } и объясняет ограничения assumeIsolated.
  • 👍 1
More from @mobi_dev
  1. Sep 20, 2026Как ProfilingManager на Android 15+ помогает искать причины тормозов в продакшене Profilin…
  2. Sep 20, 2026Как использовать свайп-действия вне List в SwiftUI В SwiftUI свайп-действия вроде удаления…
  3. Sep 20, 2026Как переносить сложные Android-экраны на Jetpack Compose: опыт TikTok Команда TikTok перен…
  4. Sep 19, 2026Как управлять кнопками панели инструментов в SwiftUI Одна и та же панель в SwiftUI ведёт с…
  5. Sep 19, 2026Как безопасно освобождать временные ресурсы с defer в Swift В Swift блок defer выполняется…
  6. Sep 19, 2026Как Flutter готовит приложения к новым версиям iOS Между WWDC и стабильным релизом iOS у к…
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 →