@State@Binding@EnvironmentObject@ObservedObject@StateObjectЭти property wrapper'ы не объявляют семантику ссылки в традиционном понимании (как указатель в C++), но позволяют работать с данными, представленными в SwiftUI как "ссылки" или общие mutable источники истины. Они управляют жизненным циклом данных и обеспечивают автоматическое обновление UI при их изменении.
Например:
@State: Управляет локальным состоянием внутри View. Изменение @State переменной приводит к перерисовке View.
swift
@Binding: Позволяет создать двухстороннюю привязку к @State или другому источнику данных. Изменения в одном месте отражаются в другом.
swift
@ObservedObject: Используется для ссылочных типов (классов), которые реализуют протокол ObservableObject. Изменение помеченных @Published свойств в этом объекте вызывает обновление View.
swift
@StateObject: Похож на @ObservedObject, но предназначен для создания экземпляра ObservableObject внутри View и управления его жизненным циклом. View становится владельцем объекта.
swift
@EnvironmentObject: Позволяет передавать экземпляры ObservableObject в иерархии View, не передавая их через инициализаторы каждого View.
swift