Выбор ответа Junior Swift Concurrency спрашивают часто обновлено
Зачем нужен @MainActor
Вопрос
Что даёт пометка класса view model атрибутом @MainActor?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Методы и свойства класса изолированы на главном акторе. @MainActor это глобальный актор, связанный с главным потоком.
Варианты ответа
- Методы и свойства класса изолированы на главном актореправильный ответ
- Класс создаётся в одном экземпляре на всё приложение
- Методы выполняются в фоне, а результат приходит на главный поток
- Класс не может содержать async-методы, только синхронные
Разбор
@MainActor это глобальный актор, связанный с главным потоком. Помеченный тип выполняет свой код на главном потоке, а компилятор заставит вызывающих из другого контекста писать await. Синглтоном класс от этого не становится. Async-методы у такого класса есть, просто их синхронные части выполняются на главном, а тяжёлую работу выносят в nonisolated- или @concurrent-функции.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.