Выбор ответа Middle SwiftUI обновлено
Побочные эффекты в body
Вопрос
Почему нельзя запускать сетевой запрос прямо в body?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: body вызывается часто и непредсказуемо: запрос уйдёт много раз. body это чистая функция от состояния: SwiftUI вызывает её при любом изменении зависимостей, при анимациях, при пересоздании родителя.
Варианты ответа
bodyвыполняется в фоновом потоке, и запрос не сможет обновить UIbodyвызывается только один раз, и повторить запрос будет нельзяbodyвызывается часто и непредсказуемо: запрос уйдёт много разправильный ответ- В
bodyнельзя использовать замыкания, а запрос требует completion
Разбор
body это чистая функция от состояния: SwiftUI вызывает её при любом изменении зависимостей, при анимациях, при пересоздании родителя. Побочные эффекты кладут в .task, .onAppear, .onChange или в действия кнопок. Изменение состояния прямо в body даёт предупреждение «Modifying state during view update» и может зациклить обновления. body выполняется на главном акторе.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.