Back to questions
Junior — Middle
71
Какие отличия существуют между использованием аннотации @State для переменной и аннотацией @ObservedObject в SwiftUI?
Companies where asked
Doubletapp
Answer from AI
sobes.tech AI
@State используется для локального состояния внутри одного View. Переменная с @State хранится и управляется самим View, и при её изменении View перерисовывается. Это подходит для простых значений, которые не нужно передавать между разными View.
@ObservedObject применяется для отслеживания объектов, которые соответствуют протоколу ObservableObject и могут содержать несколько свойств с @Published. Изменения в этих свойствах вызывают обновление всех View, которые наблюдают этот объект. Это удобно для разделения состояния между несколькими View.
Пример:
class UserSettings: ObservableObject {
@Published var score = 0
}
struct ContentView: View {
@State private var localCounter = 0
@ObservedObject var settings = UserSettings()
var body: some View {
VStack {
Text("Local: \(localCounter)")
Button("Increment Local") { localCounter += 1 }
Text("Score: \(settings.score)")
Button("Increment Score") { settings.score += 1 }
}
}
}
Здесь localCounter — локальное состояние View, а settings — объект, который может использоваться и в других View.