Выбор ответа Junior Swift Concurrency спрашивают часто обновлено

Зачем нужен @MainActor

Вопрос

Что даёт пометка класса view model атрибутом @MainActor?

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

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Методы и свойства класса изолированы на главном акторе. @MainActor это глобальный актор, связанный с главным потоком.

Варианты ответа

  1. Методы и свойства класса изолированы на главном актореправильный ответ
  2. Класс создаётся в одном экземпляре на всё приложение
  3. Методы выполняются в фоне, а результат приходит на главный поток
  4. Класс не может содержать async-методы, только синхронные

Разбор

@MainActor это глобальный актор, связанный с главным потоком. Помеченный тип выполняет свой код на главном потоке, а компилятор заставит вызывающих из другого контекста писать await. Синглтоном класс от этого не становится. Async-методы у такого класса есть, просто их синхронные части выполняются на главном, а тяжёлую работу выносят в nonisolated- или @concurrent-функции.

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

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