๐ @State @Binding
Property Wrapper์ ๋ํด์
State
โ PropertyWrapper ?
๋ณํ๊ฐ ์๊ธฐ๋ฉด ํด๋น ๋ณ์์ ๊ฐ์ ์ฝ๊ฑฐ๋ ์๋ก ์ธ ์ ์์์ ์๋ฏธํ๋ค.
SwiftUI์์๋ property wrapper๋ฅผ ์ฌ์ฉํด์ ๋ณ์์ ๋ณํ์ ํด๋น ์์ ์ ์๋ํ ํ ์ ์๋ค.
- SwiftUI๋ state๋ก ์ ์ธ๋ ํ๋กํผํฐ๋ค์ ์ ์ฅ์๋ฅผ ๊ด๋ฆฌํ๋ค.
- StateValue ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด ๋ทฐ๋ ํด๋น value์ appearance๋ฅผ ๋ฌดํจํํ๊ณ ๋ค์ ๊ฐ์ ๊ณ์ฐํ๋ค.
- State ๋ณ์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด View๋ ์๋ก ๋๋๋ง์ ํ์ฌ ํญ์ ์ต์ ๊ฐ์ ๊ฐ์ง๋ค.
- State ์ธ์คํด์ค๋ ๊ทธ ์์ฒด๋ก ๊ฐ์ด ์๋, ๊ฐ์ ์ฝ๊ณ ์ฐ๋ ๊ฒ์ ๋งํ๋ค.
- ํ์ฌ ๋ทฐ UI์ ํน์ ์ํ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๋ง๋ค์ด์ง๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ณดํต Private๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ค.
- @State ์์ฑ์ผ๋ก ์ด๋ค ํ๋กํผํฐ์ ์ด๊ธฐ๊ฐ์ ์ ํ๋ค๋ฉด, ๋ค๋ฅธ ๊ฐ์ผ๋ก ์ฌํ ๋น์ด ๋ถ๊ฐ๋ฅํ๊ณ @Binding ๋ณ์๋ฅผ ํตํด์๋ง ๊ฐ๋ฅํ๋ค.
> ์์
์นด์ดํธ ๋ฒํผ์ ํตํด ์ซ์๋ฅผ ์ฆ๊ฐ, ๊ฐ์์ํค๋ฉฐ ๋ณํ
Binding
@State๋ก ์ ์ธ๋ ์์ฑ์ ๋ค๋ฅธ ๋ทฐ์์ ์ฌ์ฉํ๋ ค ํ๋ค๋ฉด @Binding์ ์ฌ์ฉํด ์ค ์ ์๋ค. ์ฌ์ฉ์์๋ $ ๋ฅผ ์ฌ์ฉํด Binding๋ณ์์์ ๋ํ๋ธ๋ค. @State๋ก ์ ์ธ๋ ์์ฑ์ ๋ณ๊ฒฝ์ด ์๊ธฐ๋ฉด @Binding ๋ณ์์์ ์ด๋ฅผ ์ธ์งํ๊ณ ํด๋น ๊ฐ์ ๋ฐ๋ฅธ ๋ทฐ ๋ณํ๋ฅผ ๋ฐ๋ก ๋ฐ์ํ ์ ์๊ฒ ํ๋ค.
- ๋ค๋ฅธ ๋ทฐ์์ @State ์์ฑ์ผ๋ก ์ ์ธ๋ ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด @Binding ์์ฑ์ ์ฌ์ฉํ๋ค.
- ์ฌ์ฉ์์๋ $๋ฅผ ๋ถ์ฌ Binding๋ณ์์์ ๋ํ๋ธ๋ค.
- ์ธ๋ถ์์ ์ ๊ทผํด์ผํ๊ธฐ๋๋ฌธ์ private๋ ์ฌ์ฉํ์ง ์๋๋ค.
> ์์
์นด์ดํธ ๋ฒํผ์ ํตํด ์ซ์๋ฅผ ์ฆ๊ฐ, ๊ฐ์ ์ํค๊ณ ๋ค์ํ๋ฉด์์๋ ์ต์ข ์ซ์๋ฅผ ํ์ธํ๋ค.
์ฒซ๋ฒ์งธ ๋ทฐ
๋๋ฒ์งธ ๋ทฐ
'๐ iOS > SwiftUI' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SwiftUI] Property Wrapper โก (3) | 2024.03.27 |
---|---|
[SwiftUI] ํ๋กํผํฐ๋ํผ ์ ๋ฆฌ (0) | 2024.03.17 |
[iOS][SwiftUI] Save Color in UserDefaults (0) | 2024.01.01 |
[iOS][SwiftUI] @main @UIApplicationMain (0) | 2023.12.28 |
[iOS][SwiftUI] Init () (0) | 2023.12.28 |