DevPrep

Все темы › Swift Concurrency (async/await, акторы)

Что такое @MainActor?

Middle PRO

Суть

@MainActor — глобальный актор, чей executor — главный поток (главная очередь). Пометив тип, метод, свойство или замыкание @MainActor, вы говорите компилятору: этот код изолирован к главному потоку. Из другой изоляции его можно вызвать только через await, и компилятор сам вставит переключение. Это статическая гарантия: нарушение — ошибка компиляции, а не падение в рантайме.

Весь UI (UIView, UIViewController, SwiftUI View) уже помечен @MainActor, поэтому попытка обновить его из фоновой задачи не скомпилируется в Swift 6.

Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.

Полный ответ — в DevPrep

Потренируйтесь перед собеседованием

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

Скачать DevPrep в App Store