По порядку Senior SwiftUI обновлено
Как SwiftUI обновляет экран
Вопрос
Расставьте шаги обновления после нажатия кнопки, меняющей свойство @Observable-модели.
Попробуйте сами
Расставьте шаги по порядку стрелками.
- 1Действие кнопки меняет свойство модели
- 2Изменения применяются к нижележащим view и отрисовываются в следующем кадре
- 3SwiftUI заново вычисляет
bodyпомеченных view - 4Observation помечает недействительными view, которые читали это свойство в
body - 5Новое описание сравнивается со старым по идентичности и значениям
Показать ответ и разбор
Коротко
SwiftUI не перерисовывает всё: Observation знает, кто какие свойства читал, а диффинг описаний ограничивает работу изменёнными частями. Поэтому важно, чтобы body был дешёвым, а идентичность стабильной.
Правильный порядок
- 1Действие кнопки меняет свойство модели
- 2Observation помечает недействительными view, которые читали это свойство в
body - 3SwiftUI заново вычисляет
bodyпомеченных view - 4Новое описание сравнивается со старым по идентичности и значениям
- 5Изменения применяются к нижележащим view и отрисовываются в следующем кадре
Разбор
SwiftUI не перерисовывает всё: Observation знает, кто какие свойства читал, а диффинг описаний ограничивает работу изменёнными частями. Поэтому важно, чтобы body был дешёвым, а идентичность стабильной.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.