SwiftUI에서 @State는 구조체로 구현된 뷰의 상태 관리를 위해 사용된다.
뷰는 구조체로 정의되어 있고, 구조체는 값 타입이므로 기본적으로 Immutable하다.
하지만 동적으로 변경되는 데이터를 반영할 필요성이 있기 때문에, @State가 나타났다.
간단한 예제를 통해 알아보자
struct CounterView: View {
@State private var count = 0
var body: some View {
VStack {
Text("Count: \(count)")
Button("Increase") {
count += 1
}
}
}
}
count 변수는 @State로 선언되어 있다. 버튼을 클릭할 때마다 count 값이 증가하고, Text 뷰는 자동으로 새로운 count 값으로 업데이트된다. 불변성을 갖는 구조체 내에서도 상태가 변화할 수 있으며, 이 상태는 자동으로 반영된다.
결론
@State는 주로 View 내부에서 사용되는 데이터를 관리하기 위해 사용된다.
@State 변수는 UI와 바인딩되며, 사용자의 상호작용에 의해 값이 변경될 때 뷰가 자동으로 업데이트된다.
@State 변수의 값이 변경될 때, SwiftUI는 해당 변수를 사용하는 뷰를 Rebuild하여 최신 상태를 반영한다.
@State 변수는 뷰의 인스턴스가 해제될 때까지 메모리에 유지된다.