State — обертка свойства во SwiftUI, позволяющая управлять локальным состоянием представления. При изменении значения свойства, обернутого в @State, представление автоматически обновляется.
StateObject — обертка свойства во SwiftUI для создания и управления объектами, соответствующими протоколу ObservableObject, которые являются частью жизненного цикла представления. Эффективно для объектов, созданных внутри представления и живущих с ним.
ObservedObject — обертка свойства во SwiftUI для управления ссылками на существующие объекты, соответствующие протоколу ObservableObject, которые были переданы извне. SwiftUI следит за изменениями в этих объектах и обновляет представление.
Сравнительная таблица:
| Обертка | Назначение | Владение | Пример использования |
|---|---|---|---|
@State | Локальное состояние представления | Представление | Простой счетчик, флаг видимости |
@StateObject | Создание и владение ObservableObject | Представление | Модель представления (ViewModel), созданная в представлении |
@ObservedObject | Отслеживание ObservableObject, переданного | Внешний источник | Модель представления (ViewModel), переданная из родительского представления |
Пример использования @State:
swift
Пример использования @StateObject и @ObservedObject:
swift