DevPrep

Все темы › SwiftUI

Как Observation отслеживает изменения и где точечность ломается?

Senior PRO

Суть

Макрос @Observable превращает каждое хранимое свойство в computed: геттер вызывает access(keyPath:) у ObservationRegistrar, сеттер оборачивает запись в withMutation(keyPath:). SwiftUI вычисляет body внутри механизма, эквивалентного withObservationTracking: все обращения, случившиеся синхронно во время body, записываются как зависимости этого узла. Первое изменение любой из них инвалидирует узел, а при следующем body набор зависимостей собирается заново.

Отсюда правило: зависимость — это пара «экземпляр + свойство», прочитанная в body. Не тип модели и не сам факт, что модель передали во view.

Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.

Полный ответ — в DevPrep

Потренируйтесь перед собеседованием

В DevPrep эти ответы превращаются в задачи на минуту: что напечатает код, найди баг, пробное собеседование. По задаче в день.

Скачать DevPrep в App Store