Как Observation отслеживает изменения и где точечность ломается?
Суть
Макрос @Observable превращает каждое хранимое свойство в computed: геттер вызывает access(keyPath:) у ObservationRegistrar, сеттер оборачивает запись в withMutation(keyPath:). SwiftUI вычисляет body внутри механизма, эквивалентного withObservationTracking: все обращения, случившиеся синхронно во время body, записываются как зависимости этого узла. Первое изменение любой из них инвалидирует узел, а при следующем body набор зависимостей собирается заново.
Отсюда правило: зависимость — это пара «экземпляр + свойство», прочитанная в body. Не тип модели и не сам факт, что модель передали во view.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep