По порядку Senior SwiftUI обновлено

Как SwiftUI обновляет экран

Вопрос

Расставьте шаги обновления после нажатия кнопки, меняющей свойство @Observable-модели.

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

Расставьте шаги по порядку стрелками.

  1. 1
    Действие кнопки меняет свойство модели
  2. 2
    Изменения применяются к нижележащим view и отрисовываются в следующем кадре
  3. 3
    SwiftUI заново вычисляет body помеченных view
  4. 4
    Observation помечает недействительными view, которые читали это свойство в body
  5. 5
    Новое описание сравнивается со старым по идентичности и значениям
Показать ответ и разбор

Коротко

SwiftUI не перерисовывает всё: Observation знает, кто какие свойства читал, а диффинг описаний ограничивает работу изменёнными частями. Поэтому важно, чтобы body был дешёвым, а идентичность стабильной.

Правильный порядок

  1. 1
    Действие кнопки меняет свойство модели
  2. 2
    Observation помечает недействительными view, которые читали это свойство в body
  3. 3
    SwiftUI заново вычисляет body помеченных view
  4. 4
    Новое описание сравнивается со старым по идентичности и значениям
  5. 5
    Изменения применяются к нижележащим view и отрисовываются в следующем кадре

Разбор

SwiftUI не перерисовывает всё: Observation знает, кто какие свойства читал, а диффинг описаний ограничивает работу изменёнными частями. Поэтому важно, чтобы body был дешёвым, а идентичность стабильной.

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

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