Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

๐Ÿ’™ [24๋…„ 12์›”]

mint3382 edited this page Apr 1, 2025 · 3 revisions

โญ๏ธ Introducing SwiftUI: Building Your First App โ€ 20241223

iOS ๊ฐœ๋ฐœ ๋ฐฉ์‹์˜ ์ง„ํ™”์™€ SwiftUI์˜ ๋“ฑ์žฅ

์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ SwiftUI

  • ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŠน์ง•:
    • "๋ฌด์—‡์„" ๊ทธ๋ฆด์ง€๋ฅผ ์„ ์–ธํ•˜๊ณ  "์–ด๋–ป๊ฒŒ" ๊ทธ๋ฆด์ง€๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์— ์œ„์ž„.
    • ์˜ˆ: SwiftUI์—์„œ @State๋‚˜ @Binding์„ ํ†ตํ•ด ์ƒํƒœ ๋ณ€ํ™”๋ฅผ UI์— ์‰ฝ๊ฒŒ ๋ฐ˜์˜.
  • SwiftUI์™€ UIKit ๋น„๊ต:
    • UIKit์€ ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ, ์ƒํƒœ์™€ ๋ทฐ๋ฅผ ๋™๊ธฐํ™”ํ•ด์•ผ ํ•จ.
    • SwiftUI๋Š” ๋ฐ์ดํ„ฐ์™€ ๋ทฐ๋ฅผ ์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์œผ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”.
  • ์ด๋ฒˆ WWDC์— ๋Œ€ํ•œ ๊ฐ์ƒ:
    • ์„ ์–ธํ˜• ๋ฐฉ์‹๊ณผ UI ๊ตฌ์„ฑ์˜ ๋‹จ์ˆœํ™”๋ฅผ ๊ฐ•์กฐํ–ˆ์ง€๋งŒ, ์‹ฌํ™”๋œ ๋‚ด์šฉ์€ ๋ถ€์กฑํ–ˆ๋‹ค๋Š” ์˜๊ฒฌ.

SwiftUI์˜ ์žฅ์ ๊ณผ ์ƒํƒœ ๊ด€๋ฆฌ

  • ์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์˜ ์žฅ์ :
    • ์ƒํƒœ์— ๋”ฐ๋ฅธ UI ์—…๋ฐ์ดํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰.
    • ์˜ˆ: ์กฐ๊ฑด๋ฌธ์œผ๋กœ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•  ๊ฒฝ์šฐ ๋‹ค์–‘ํ•œ ์กฐํ•ฉ์„ ์ˆ˜์ž‘์—…์œผ๋กœ ์ฒ˜๋ฆฌํ•  ํ•„์š” ์—†์Œ.
  • ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๋Š” ๋„๊ตฌ:
    • @State, @Binding, @ObservedObject ๋“ฑ.
    • UI ์ƒํƒœ ๋ณ€ํ™”์— ๋”ฐ๋ฅธ ๋””๋ฒ„๊น…์ด ๊ฐ„ํŽธ.
  • UIKit๊ณผ์˜ ์ฐจ์ด:
    • UIKit์€ ์ƒํƒœ ๋ณ€ํ™” ์‹œ ๋ช…์‹œ์ ์œผ๋กœ ๋ทฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๋ฉฐ, ๋ณต์žกํ•œ ๋””๋ฒ„๊น…์ด ์š”๊ตฌ๋จ.

์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ด€์ ์—์„œ์˜ SwiftUI

  • ๊ตฌ์กฐ์ฒด ๊ธฐ๋ฐ˜์˜ ๋ทฐ ๊ตฌ์„ฑ:
    • SwiftUI๋Š” ๊ตฌ์กฐ์ฒด๋กœ ๋ทฐ๋ฅผ ์ƒ์„ฑํ•˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ํšจ์œจ์ .
    • ๊ตฌ์กฐ์ฒด๋Š” ์Šคํƒ์— ์ €์žฅ๋˜๋ฏ€๋กœ ํ• ๋‹น/ํ•ด์ œ๊ฐ€ ๋น ๋ฆ„.
  • ๋Ÿฐํƒ€์ž„ ์˜ค๋ฒ„ํ—ค๋“œ ๊ฐ์†Œ:
    • ๋ทฐ๋ฅผ ์ž˜๊ฒŒ ๋‚˜๋ˆ„๊ณ  ์กฐํ•ฉํ•ด๋„ ๊ตฌ์กฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋Ÿฐํƒ€์ž„ ์˜ค๋ฒ„ํ—ค๋“œ ์—†์Œ.
    • UIKit์€ ๋ทฐ๋ฅผ ์ž˜๊ฒŒ ๋‚˜๋ˆŒ์ˆ˜๋ก ๋ทฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋Š˜์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ๋Ÿฐํƒ€์ž„ ์˜ค๋ฒ„ํ—ค๋“œ ์ฆ๊ฐ€ (๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น/ํ•ด์ œ, ์˜คํ† ๋ ˆ์ด์•„์›ƒ ๋“ฑ)

SwiftUI์™€ UIKit์˜ ๊ธฐ์ˆ ์  ์ฐจ์ด

SwiftUI์™€ UIKit์˜ ๊ตฌ์กฐ์  ์ฐจ์ด

  • UIKit์˜ ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ์ ‘๊ทผ:
    • UI๋Š” UIView, UIViewController์™€ ๊ฐ™์€ ํด๋ž˜์Šค ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘.
    • ํด๋ž˜์Šค๋Š” ํž™์— ํ• ๋‹น๋˜๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ์ถ”๊ฐ€์ ์ธ ๋น„์šฉ์ด ๋ฐœ์ƒ.
  • SwiftUI์˜ ๊ตฌ์กฐ์ฒด ๊ธฐ๋ฐ˜ ์ ‘๊ทผ:
    • ๊ตฌ์กฐ์ฒด๋Š” ๊ฐ’ ํƒ€์ž…์œผ๋กœ ์Šคํƒ์— ์ €์žฅ๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ์Œ.

ํƒ€์ž… ์ถ”๋ก ๊ณผ ์ œ๋„ค๋ฆญ ํ™œ์šฉ

  • SwiftUI์˜ ์ œ๋„ค๋ฆญ ์ค‘์ฒฉ:
    • SwiftUI๋Š” ๋ทฐ๋ฅผ ์ œ๋„ค๋ฆญ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๊ด€๋ฆฌ.
    • ์˜ˆ: ์กฐ๊ฑด๋ฌธ์— ๋”ฐ๋ผ ๋ทฐ๊ฐ€ ๋‹ค๋ฅด๋ฉด ์ œ๋„ค๋ฆญ์ด ์ค‘์ฒฉ๋˜์–ด ํƒ€์ž… ์ถ”๋ก  ์‹œ๊ฐ„์ด ์ฆ๊ฐ€.
  • UIKit์˜ ํƒ€์ž… ๊ด€๋ฆฌ:
    • UIKit์€ ์ •ํ•ด์ง„ ํด๋ž˜์Šค ํƒ€์ž… ์‚ฌ์šฉ์œผ๋กœ ํƒ€์ž… ์ถ”๋ก  ๋ถ€๋‹ด์ด ์ ์Œ.
    • ์ƒํƒœ ๊ด€๋ฆฌ์™€ ๋ทฐ ์—…๋ฐ์ดํŠธ๋Š” ๋Ÿฐํƒ€์ž„์— ์ˆ˜ํ–‰.

๋ทฐ ๊ณ„์ธต ๊ด€๋ฆฌ ๋ฐฉ์‹

  • UIKit์˜ ๋ทฐ ๊ณ„์ธต:
    • ๋ทฐ ๊ณ„์ธต์ด ๊นŠ์–ด์งˆ์ˆ˜๋ก ์„ฑ๋Šฅ ์ €ํ•˜ ๊ฐ€๋Šฅ.
    • ์˜คํ† ๋ ˆ์ด์•„์›ƒ๊ณผ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ์‚ฌ์šฉ์œผ๋กœ ๋ณต์žก๋„๊ฐ€ ์ฆ๊ฐ€.
  • SwiftUI์˜ ์ปดํฌ์ง€์…”๋„ ๋ทฐ:
    • ๋ทฐ๋ฅผ ์ž‘์€ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์ชผ๊ฐœ์–ด ์กฐํ•ฉ ๊ฐ€๋Šฅ.
    • ์ƒํƒœ ๊ธฐ๋ฐ˜ ๋ Œ๋”๋ง์œผ๋กœ ์ตœ์ ํ™”๋œ ๋ทฐ ๊ณ„์ธต ์ œ๊ณต.

SwiftUI์˜ ์‹ค๋ฌด ์ ์šฉ ๊ณ ๋ ค์‚ฌํ•ญ

์ƒํƒœ ๊ด€๋ฆฌ์™€ ๋ฐ์ดํ„ฐ ํ๋ฆ„

  • ์†Œ์Šค ๋ฐ์ดํ„ฐ์™€ ๋ทฐ์˜ ์—ฐ๊ฒฐ:
    • @State์™€ @StateObject ๋“ฑ Source of Truth ์‚ฌ์šฉ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ์œ ์ง€.
    • ์˜ˆ: @Published ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ƒํƒœ ๋ณ€๊ฒฝ ์‹œ ์ž๋™์œผ๋กœ UI ์—…๋ฐ์ดํŠธ.
  • ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ์ฒ˜๋ฆฌ:
    • ๋‹จ์ˆœํ•œ UI์—๋Š” @State ์‚ฌ์šฉ ๊ถŒ์žฅ.
    • ๋ณต์žกํ•œ ๋กœ์ง์€ ObservableObject๋กœ ๋ถ„๋ฆฌํ•ด ๊ด€๋ฆฌ.

์ปดํŒŒ์ผ ํƒ€์ž„ ์ตœ์ ํ™”

  • ์ปดํŒŒ์ผ ํƒ€์ž„ ์—๋Ÿฌ:
    • ๋ทฐ๊ฐ€ ๋ณต์žกํ•ด์ง€๋ฉด ํƒ€์ž… ์ถ”๋ก  ์‹คํŒจ ๊ฐ€๋Šฅ.
    • ํ•ด๊ฒฐ์ฑ…:
      • ๋ทฐ๋ฅผ ์ž‘์€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ํƒ€์ž… ์ถ”๋ก  ๋ถ€๋‹ด ์™„ํ™”.
      • ์กฐ๊ฑด๋ถ€ ๋กœ์ง์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์ž‘์„ฑ.
  • ์ปดํŒŒ์ผ ํƒ€์ž„ vs. ๋Ÿฐํƒ€์ž„ UI ๊ฒ€์ฆ:
    • UIKit์€ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ํฌ์ง€๋งŒ, SwiftUI๋Š” ์ปดํŒŒ์ผ ํƒ€์ž„์— ๋Œ€๋ถ€๋ถ„ ๊ฒ€์ฆ.
    • ex) UIKit์—์„œ๋Š” subview ์ถ”๊ฐ€ ์•ˆ ํ•จ, ์˜คํ† ๋ ˆ์ด์•„์›ƒ ์—๋Ÿฌ ๋“ฑ ์‹คํ–‰ํ•ด์•ผ ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ, SwiftUI์˜ UI ๋กœ์ง ์—๋Ÿฌ๋Š” ๋Œ€๋ถ€๋ถ„ ์ปดํŒŒ์ผ ํƒ€์ž„์— ๊ฒ€์ฆ ๊ฐ€๋Šฅํ•˜๋‹ค.

์ ‘๊ทผ์„ฑ๊ณผ ์„ฑ๋Šฅ ๊ณ ๋ ค

  • ์ ‘๊ทผ์„ฑ(Accessibility) ํ†ตํ•ฉ:
    • SwiftUI๋Š” Accessibility API๋ฅผ ํ†ตํ•ด ์†์‰ฝ๊ฒŒ ์ ‘๊ทผ์„ฑ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ.
    • UIKit ๋Œ€๋น„ ์ ‘๊ทผ์„ฑ ์„ค์ • ์‹œ๊ฐ„์ด ๋‹จ์ถ•.
  • ์„ฑ๋Šฅ ์ตœ์ ํ™”:
    • ๋ทฐ ์—…๋ฐ์ดํŠธ๋Š” ์ƒํƒœ ๋ณ€ํ™”์— ๊ธฐ๋ฐ˜ํ•ด ์ˆ˜ํ–‰๋˜๋ฏ€๋กœ ๋ถˆํ•„์š”ํ•œ ๋ฆฌ๋ Œ๋”๋ง ๋ฐฉ์ง€.

Clone this wiki locally

AltStyle ใซใ‚ˆใฃใฆๅค‰ๆ›ใ•ใ‚ŒใŸใƒšใƒผใ‚ธ (->ใ‚ชใƒชใ‚ธใƒŠใƒซ) /