๋ฒˆํ˜ธ : 034, ์ž‘์„ฑ์ผ์ž: 2024-08-27

2024.08.19 ~ 2024.08.26

๐ŸŽจย Swifter for SwiftUI ์ •๋ฆฌ


Swifter for SwiftUI๋ผ๋Š” SwiftUI๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ SwiftUI์˜ Component ์„ค๋ช…, ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•, Tip๋“ค์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋†“์€ ์•ฑ์„ ๋ณด๋ฉฐ ์ •๋ฆฌํ•ด๋ดค๋‹ค.

์œ ๋ฃŒ๊ฒฐ์ œ๋ฅผ ํ•ด์•ผ ๋ชจ๋“  ๋‚ด์šฉ์ด ๋ณด์—ฌ ๊ฒฐ์ œ ํ›„ ์ •๋ฆฌํ–ˆ๋‹ค. OS ์—…๋ฐ์ดํŠธ์— ๋งž์ถฐ์„œ ๋‚ด์šฉ์ด ๋Œ€์‘์ด ์•ˆ๋˜์žˆ๋Š” ๋ถ€๋ถ„๋“ค๋„ ์žˆ์ง€๋งŒ ๋งŒ์กฑํ–ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ •๋ฆฌ ํ›„ ์ด๋ฒˆ ์‚ฌ์ด๋“œํ”„๋กœ์ ํŠธ์— SwiftUI๋ฅผ ์ ์šฉํ–ˆ๋‹ค.

SwiftUI์™€ TCA์•„ํ‚คํ…์ฒ˜๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„์„œ TCA์™€ ๊ด€๋ จ๋œ ๋งํฌ๋“ค์„ ์ฐพ์•„๋ดค๋‹ค.

  1. ๐Ÿ”—ย pointfreeco -ReadMe Korean
  2. ๐Ÿ”—ย pointfreeco - ๋™์˜์ƒ ๊ฐ•์˜
  3. ๐Ÿ”—ย pointfreeco - Tutorial
  4. ๐Ÿ”—ย TCA ํ•œ๊ธ€ e-book

๐Ÿ”ย Supabase Auth


Firebase์˜ ๋Œ€ํ•ญ๋งˆ๋กœ ์ตœ๊ทผ ๋– ์˜ค๋ฅด๋Š” Supabase๋ฅผ ์ด๋ฒˆ์— ์‚ฌ์ด๋“œํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.

๊ธฐ์กด์— FirebaseAuth + SwiftUI ๋กœ ๋กœ๊ทธ์ธ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ ๊ฑฐ์˜ ๋ฐ”๊ฟ€ ๋ถ€๋ถ„์€ ์ธ์Šคํ„ด์Šค๋งŒ ๋ณ€๊ฒฝํ•˜๊ณ  ๋ฉ”์„œ๋“œ๊ฐ€ ๊ฑฐ์˜ ๋™์ผํ–ˆ๋‹ค.

Supabase Auth์—์„œ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ์นด์นด์˜ค ์ธ์ฆ์ด ์žˆ๋Š” ๋ถ€๋ถ„์ด ์‹ ๊ธฐํ–ˆ๋‹ค.

์‚ฌ์ด๋“œํ”„๋กœ์ ํŠธ์—์„œ ์ด๋ฉ”์ผ๋กœ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ๊นŒ์ง€ ์ ์šฉํ–ˆ๋‹ค.

๐Ÿ“ƒย SwiftPM ๊ด€๋ จ ๊ธ€ ์ž‘์„ฑ


๐Ÿ”—ย SwiftPM - SwiftPackage

SwiftPackage, SwiftPM, SwiftPackage๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•, ๊ฐ„๋‹จํ•œ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ž‘์„ฑํ–ˆ๋‹ค.

๐Ÿ”—ย SwiftPM - PackageCollection PackageCollection์„ ๋งŒ๋“ค์–ด ์‰ฝ๊ฒŒ Package๋ชฉ๋ก์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์„œ๋ช…์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž‘์„ฑํ–ˆ๋‹ค.

PackageCollection์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ WWDC ์˜์ƒ์— ๋งค์šฐ ์นœ์ ˆํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์ง€๋งŒ, ์„œ๋ช…์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—†์–ด์„œ ์ž์„ธํžˆ ์ž‘์„ฑํ–ˆ๋‹ค.

ํ•ด๋‹น ๊ธ€์„ ์ •๋ฆฌํ•œ ํ›„, ์ง์ ‘ ์‚ฌ์šฉ ์ค‘์ธ DesignSystem์— ๋น„๊ณต๊ฐœ๋กœ SwiftPackage๋ฅผ ๋ฐฐํฌํ–ˆ๋‹ค.

๐Ÿ™‹๐Ÿปโ€โ™‚๏ธ ๊ธฐํƒ€ ์‚ฌํ•ญ


  1. ๐Ÿ”—ย .gitignore์˜ ์Šค๋‹ˆํŽซ์ด ๋ณด๊ธฐ๊ฐ€ ํž˜๋“ค์–ด์„œ ์ฃผ์„์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ •๋ฆฌํ–ˆ๋‹ค.
  2. iOS์•ฑ์˜ ์ ‘๊ทผ๊ถŒํ•œ ์ค‘ ์นด๋ฉ”๋ผ ๊ถŒํ•œ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์•ฑ์ด Refresh ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. (๋‹ค๋ฅธ ์ ‘๊ทผ๊ถŒํ•œ๋“ค๋„ ํ™•์ธํ•ด๋ด์•ผ๊ฒ ๋‹ค.) ๋˜ํ•œ, ๊ถŒํ•œ์š”์ฒญ์„ ํ•œ ๋ฒˆ ํ–ˆ์–ด๋„ TestFlight์—์„œ ์•ฑ์„ ๊ณ„์† ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋‹ค๋ณด๋ฉด ๊ฐ€๋”์”ฉ ๐Ÿ”—ย AuthorizationStatus๊ฐ€ notDetermined๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.
  3. Firebase Crashlytics์—์„œ objc_retain์ด๋ผ๋Š” ์ด์Šˆ๊ฐ€ ์žˆ์–ด์„œ ํ™•์ธํ•ด๋ณด์•˜๋Š”๋ฐ Zombie๊ฐ์ฒด์— ์ ‘๊ทผํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด์Šˆ์˜€๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•ด์ œ๋˜์—ˆ๋Š”๋ฐ ์ ‘๊ทผํ•  ๋•Œ Crash๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. Xcode Instrument๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฐ, ์ข€ ๋” ๋ด์•ผ๋  ๊ฒƒ ๊ฐ™๋‹ค.
  4. Github Action์„ iOS์•ฑ๊ฐœ๋ฐœ์ž์ž…์žฅ์—์„œ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•  ์ง€ ๊ณ ๋ฏผํ•ด๋ดค๋‹ค.