DevPrep

Все темы › SwiftUI

Как SwiftUI понимает, что перерисовывать? Что такое identity и diffing?

Senior PRO

Суть

SwiftUI хранит не ваши структуры, а attribute graph — дерево узлов с состоянием и зависимостями. При изменении зависимости (@State, прочитанное свойство @Observable-модели, @Environment) помечаются только зависимые узлы, их body пересчитывается, новое дерево сравнивается со старым (diffing), и в UIKit/Core Animation уходят только реальные изменения. Чтобы сопоставить старые и новые узлы, фреймворку нужна идентичность.

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

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

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

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

Скачать DevPrep в App Store