Deep_Dev
article thumbnail

 

 

๐Ÿ“š @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