В SwiftUI @State, @Binding и @ObservedObject — это property wrappers, которые управляют потоком данных между представлениями и запускают обновления UI.
@State используется для локальных, принадлежащих представлению изменяемых данных.
@State private var isExpanded: Bool = false
@Binding создаёт двустороннюю связь с состоянием, принадлежащим родительскому представлению.
$@Binding var isExpanded: Bool
// Родитель передаёт его так: ChildView(isExpanded: $isExpanded)
@ObservedObject используется для наблюдения за внешним объектом ссылочного типа, который соответствует протоколу ObservableObject.
@Published на объекте@ObservedObject var viewModel: MyViewModel
@State владеет своими данными; @Binding и @ObservedObject ссылаются на внешние данные@State и @Binding работают с типами значений; @ObservedObject работает с ссылочными типами@State — локален; @Binding соединяет родителя и потомка; @ObservedObject подключается к общим внешним моделямProperty wrapper @State владеет и напрямую управляет своими данными, в то время как @Binding и @ObservedObject только ссылаются на данные, которыми владеет что-то другое.
Новый — ещё не проверен сообществом
Вы