@ObservedObject - это
property wrapper, который позволяет подписываться на изменения внешнего объекта данных и автоматически обновлять
View при их изменении.
Как использовать:
Создаем ObservableObject:
class Counter: ObservableObject {
@Published var value = 0
}
Передаем объект в View (через инициализатор):
struct CounterView: View {
@ObservedObject var counter: Counter
var body: some View {
Button("+1") { counter.value += 1 }
Text("Значение: \(counter.value)")
}
}
Используем в родительском View:
struct ParentView: View {
@StateObject private var counter = Counter()
var body: some View {
CounterView(counter: counter)
}
}
Ключевые особенности:
- Автоматическое обновление: View перерисовывается при изменении @Published свойств.
- Локальная область видимости: работает только для конкретного View, куда передан объект.
- Гибкость: можно передавать между View как обычное свойство.
Для глобальных данных лучше использовать
@EnvironmentObject.