๐ŸŽ Dev/SwiftUI

[SwiftUI] @State

Callie_ 2024. 5. 22. 15:07

 

@State?

 

 
 
- PropertyWrapper๋กœ, SwiftUI์—์„œ ๋ณ€ํ•˜๋Š” ๋ณ€์ˆ˜์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ๊ฐ’์„ ์ฝ์–ด์ฃผ๊ฑฐ๋‚˜ ๋ฐ”๊ฟ”์ฃผ๋Š” ์—ญํ• (๊ฐ’ ์ž์ฒด X, ์ˆ˜๋‹จ O)์„ ํ•œ๋‹ค.
 
- ํ•ด๋‹น ์†์„ฑ์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ณ€์ˆ˜ ์•ž์— @State ๋ฅผ ๋ถ™์—ฌ์„œ ์‚ฌ์šฉํ•œ๋‹ค.
 
- ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝ ํ•  ๋•Œ๋งˆ๋‹ค body์†์„ฑ์ด ์žฌ์„ค์ •๋˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•ด๋‹น state ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ทฐ๋Š” ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ๋ทฐ๋ฅผ ์ƒˆ๋กœ ๋ Œ๋”๋งํ•œ๋‹ค.
 
- ์‚ฌ์šฉ์ž ์•ก์…˜์— ๋”ฐ๋ผ UI๋ฅผ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ๋ฐ์— ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
 
- @State๋Š” ์„ ์–ธํ•œ ๋ทฐ ์™ธ์—์„  ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฉฐ (๋ณ€๊ฒฝํ•˜๋ ค๋ฉด $๋ฅผ ๋ถ™์ธ ๋ฐ”์ธ๋”ฉ์„ ์ด์šฉํ•ด์•ผํ•œ๋‹ค), ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— @State ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๋ ค๋ฉด ๊ฐ€์žฅ ์ƒ์œ„ ๋ทฐ์—์„œ ์ž‘์„ฑํ•˜๋ฉฐ private ์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ ๋ถ™์—ฌ์•ผํ•œ๋‹ค. ---> ์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ ๋ถ™์ด๋Š” ์ด์œ ๋Š” ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„์—์„œ ์„ค์ •ํ•˜๋Š” ๊ฑธ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ!
 
 
 
 
์˜ˆ์ œ ์ฝ”๋“œ
 

struct ContentView: View {
    
    @State private var number = 0
    
    var body: some View {
        VStack {
            Text("\(number)")
            Button(action: {
                number += 1
            }) {
                Text("์ˆซ์ž ๋ฐ”๊พธ๊ธฐ")
            }
        }
    }
}

 
1. ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ…์ŠคํŠธ๋กœ ์ ํžŒ ์ˆซ์ž๊ฐ€ 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค.
2. ๋ณ€ํ•˜๋Š” ๊ฐ’์€ number์ด๊ธฐ ๋•Œ๋ฌธ์— number๋ฅผ @State ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ–ˆ๋‹ค.
--> ๋”ฐ๋ผ์„œ, "์ˆซ์ž ๋ฐ”๊พธ๊ธฐ"๋ผ๋Š” ๋ฒ„ํŠผ์„ ํƒญํ•˜๋ฉด ๋ทฐ์— ์žˆ๋Š” ํ…์ŠคํŠธ๋Š” 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
 
SwiftUI๋กœ ๋ทฐ๋ฅผ ๊ทธ๋ฆด ๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์†์„ฑ์ด์ง€๋งŒ ์œ„ ์˜ˆ์ œ์ฝ”๋“œ์ฒ˜๋Ÿผ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ๊ฐ’์ด ๋ณ€ํ• ๋•Œ๋งˆ๋‹ค ๋ฐ˜์˜๋˜๋Š” UI๋Š” ๋งค๋ฒˆ ์ƒˆ๋กญ๊ฒŒ ๊ทธ๋ ค์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ „์ฒด ๋ทฐ๋ฅผ ๋‹ค์‹œ ๊ทธ๋ฆฌ์ง€ ์•Š์•„๋„ ๋  ๋• @State ๋Œ€์‹  @Binding์„ ํ™œ์šฉํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋กœ์ง์„ ๊ณ ๋ฏผํ•ด๋ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค.
 
 
 
 
 
References
 
https://developer.apple.com/documentation/swiftui/state

 

State | Apple Developer Documentation

A property wrapper type that can read and write a value managed by SwiftUI.

developer.apple.com

 
https://velog.io/@suhwj/SWIFTUI-STATE

 

SWIFTUI @STATE

UIKit ์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ๋Š” ์–ด๋– ํ•œ ๋ณ€์ˆ˜์— ๋ณ€ํ™”๊ฐ€ ์ƒ๊ธฐ๋ฉด ํ•ด๋‹น ๋ณ€ํ™”๋ฅผ ์ง์ ‘ ๊ด€์ฐฐํ•˜๊ณ  ๋ฐ˜์˜ ํ•ด ์ฃผ์–ด์•ผ ํ–ˆ๋Š”๋ฐ SwiftUI ์—์„œ๋Š” property wrapper ๋ฅผ ํ™œ์šฉํ•ด ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ์ž๋™ํ™” ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค.๋ณ€ํ™”๊ฐ€ ์ƒ

velog.io