๐ iOS (38) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [iOS] fastlane์ ์ด์ฉํด ๋ฐฐํฌ ์๋ํํ๊ธฐ ์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค :)์ค๋์ ํ๋ก์ ํธ์ fastlane์ ๋์ ํ ๊ฒฝํ์ ํ๋ฒ ๊ณต์ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค!!๋ฐฐํฌ ์๋ํ๋?๋จผ์ , ๋ฐฐํฌ ์๋ํ๊ฐ ๋ฌด์์ธ์ง๋ถํฐ ์ ๋ฆฌํ๊ณ ๋์ด๊ฐ๊ฒ ์ต๋๋ค!๊ฐ๋ฐ ๊ณต๋ถ๋ฅผ ํ๋ค๋ณด๋ฉด CI/CD๋ผ๋ ๋จ์ด๋ฅผ ํ๋ฒ์ฏค ์ ํด๋ณด์ จ์ํ ๋ฐ์, ๋ฐฐํฌ ์๋ํ๋ CD์ ํด๋นํฉ๋๋ค.CI/CD๋ ์ฑ ๊ฐ๋ฐ ๋จ๊ณ์ ์๋ํ๋ฅผ ํตํฉํ๋ ์ฑ ์ ๊ณต ๋ฐฉ์์ผ๋ก, ์ง์์ ํตํฉ(Continuous Integration)/์ง์์ ์ ๊ณต ๋๋ ๋ฐฐํฌ(Continuous Deployment ๋๋ Delivery)๋ฅผ ๋ปํฉ๋๋ค.๋ฐฐํฌ๋ฅผ ์๋ํ ํด์ผํ๋ ์ด์ ?๊ทธ๋ ๋ค๋ฉด ๋ฐฐํฌ ์๋ํ๋ ์ ํ์ํ ๊น์?๋น์ฐํ ๋ฐฐํฌ๋ฅผ ์๋ํํ์ง ์๊ณ , ์๋์ผ๋ก ํ ์๋ ์๊ฒ ์ฃ . ํ์ง๋ง, ์๋์ผ๋ก ๋ฐฐํฌํ๋ ๊ณผ์ ์ ์๊ฐ๋ ์ค๋ ๊ฑธ๋ฆฌ๊ณ ๋ฒ๊ฑฐ๋กญ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ฝ ์ด ๊ณผ์ ์์ ์ค.. [iOS/Architecture] UseCase ํ์ฉ๊ธฐ ์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค :)์ต๊ทผ์ ์งํํ ๊ฐ์ธ ํ๋ก์ ํธ์ ์ํคํ ์ฒ๋ฅผ MVVM-Clean Architecture ๋ก ์ค๊ณํ๊ณ , ๊ฐ ๋ ์ด์ด์ ์ญํ ์ ๋ช ํํ ๊ตฌ๋ถํด ์ ์ฒด ์ฝ๋์ ์ ์ง๋ณด์์ฑ์ ๋์ด๋ ๋ฐ ์ด์ ์ ๋ง์ถ์ด ๊ฐ๋ฐ์ ํ์๋๋ฐ์,์ด ๊ณผ์ ์์ ํนํ UseCase์ ์ญํ ์ ๋ํด ๋ง์ด ๊ณ ๋ฏผ์ ํ ๊ฒ ๊ฐ์์!๊ทธ๋์ ์ ๊ฐ ์ ์ ๋ฐฉ์๋๋ก UseCase๋ฅผ ๊ตฌ์ฑํ ๋ด์ฉ์ ํ ๋ฒ ๊ณต์ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค.UseCase๋?UseCase ๋ ์ด์ด์ ์ญํ ์ ํ ์ค๋ก ์ ์ํ๋ค๋ฉด ์๋์ ๊ฐ์ด ์ ์ํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.UseCase๋ ๋น์ฆ๋์ค ๋ก์ง์ด ์์นํ๋ ๊ณณ์ผ๋ก, ์ํฐํฐ๋ก ๋ค์ด์ค๊ณ ๋๊ฐ๋ ๋ฐ์ดํฐ ํ๋ฆ์ ์กฐ์ ํฉ๋๋ค. ์ด ์ ์๋ฅผ ์ข ํ์ด์ ์๊ฐํด๋ณผ๊ฒ์!ํ๋ฉด์ ๋ณด์ฌ์ค ๋ฐ์ดํฐ๋ฅผ ์ํ๋ ํํ๋ก ์ป์ผ๋ ค๋ฉด?1. ๋คํธ์ํฌ ํต์ ์ ํตํด DB์ ์๋ .. [Combine] ๊ด์ฐฐ๊ฐ๋ฅํ ๋ฐ์ดํฐ ๋ง๋ค๊ธฐ - ObservableObject์ @Published ์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค :)SwiftUI๊ด๋ จ ๋ด์ฉ์ ์ ๋ฆฌํ๋ค๋ณด๋ Combine ๊ด๋ จ ๋ด์ฉ์ด ๋์๋ฒ๋ ค์ Combine์ผ๋ก ๋์์์ต๋๋ท..ใ SwiftUI๋ก ๊ฐ๋ฐํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ค๋ณด๋ฉด ๋ฌด์กฐ๊ฑด Combine์ ๊ณต๋ถํ ์๋ฐ์ ์๋ ๊ฒ ๊ฐ์์!์ค๋์ ๊ด์ฐฐ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ด์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ๋ฐ๋ผ UI๋ฅผ ์ด๋ป๊ฒ ์ ๋ฐ์ดํธํ ์ ์๋์ง์ ๋ํด ํ๋ฒ ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค.@Published@propertyWrapperstruct Published Publisher๋ก ๋ง๋ค์ด์ฃผ๋ ํ๋กํผํฐ ๋ํผ๊ฐ ๋ฐ๋ ๋๋ง๋ค willSet ๋ธ๋ก์์ publish $ ๊ธฐํธ๋ฅผ ์ด์ฉํ์ฌ projectedValue์ ์ ๊ทผํด๋์ค์ ํ๋กํผํฐ์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ (๊ฐ ํ์ ๋ถ๊ฐ)์ ๋ฒ Combine ๊ฒ์๊ธ์์ Publisher์ Subscriber๊ฐ ๋ฌด์์ธ์ง ๊ฐ๋ .. [SwiftUI] View ์ ๋ฐ์ดํธ ๋ฐฉ์ - @State, @Binding ์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค :) SwiftUI์์๋ ๋ทฐ๋ฅผ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ ๋ฐ์ดํธ ํ๋์ง ์์๋ณด๊ณ , SwiftUI์์ ์ ๊ณตํด์ฃผ๋ ๋ค์ํ ํ๋กํผํฐ ๋ํผ ์ค ๋ํ์ ์ธ ๋ช ๊ฐ์ง์ ๋ํด์ ์ดํด๋ณผ๊ฒ์~!SwiftUI์ View ์ ๋ฐ์ดํธ ๋ฐฉ์SwiftUI์์๋ ๋ฐ์ดํฐ๊ฐ ๋ฐ๋๋ฉด ์ด์ ๋ฐ๋ผ ๋ทฐ๊ฐ ๋ฐ๋๋๋ค. ์ฆ, ๋ทฐ๋ ๋ฐ์ดํฐ์ ๋ํ ์์กด์ฑ์ ๊ฐ์ง๋๋ค.SwiftUI์์๋ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ๋ทฐ๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ฉ์ปค๋์ฆ์ด ๋ด๋ถ์ ์กด์ฌํฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ ์์ ์ ๊ณ์ฐํด์ ๋ทฐ๋ฅผ ์ ๋ฐ์ดํธ ์์ผ์ฃผ๋ ์ผ์ ๊ฐ๋ฐ์๊ฐ ์ผ์ผ์ด ํด์ฃผ์ง ์์๋ ๋๋ ๊ฒ์ด์ฃ . ์ด๋ฅผ ์ํด SwiftUI์์๋ ๋ค์ํ ํ๋กํผํฐ ๋ํผ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด ์ค ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ @State, @Binding ์ ์ด์ฉํด ์ด๋ค ๋ฐฉ์์ผ๋ก ๋ทฐ๋ฅผ ์ ๋ฐ์ดํธ ํ๊ฒ ๋๋ ๊ฒ์ธ.. [SwiftUI] View Life Cycle ์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค :)๊ทธ๋์ ๋ธ๋ก๊ทธ ๊ธ์ ๋ชป์ผ๋๋ฐ,,, ์ต๊ทผ์ ๊ฐ์ธ ํ๋ก์ ํธ๋ฅผ ํ๋ ์งํํ์ต๋๋ค..ใ SwiftUI ํ๋ ์์ํฌ๋ก ๊ฐ์ธ ํ๋ก์ ํธ ๊ฐ๋ฐ์ ์งํํ๋ฉฐ ํ์ตํ ๋ด์ฉ๋ ๋ง์์ ์๋กญ๊ฒ ํ์ตํ๊ฑฐ๋ ์ ๋ฆฌํด๋ ๋ด์ฉ์๋ธ๋ก๊ทธ์๋ ๊ณต์ ํด๋ณผ๊ฒ์~! (์ด์ ๋ณด๋ UIKit ๊ธ์ ๊ฑฐ์ ์์ผ๋ค์...?ใ .......)SwiftUI View Life CycleLifecycle์ SwiftUI ๋ทฐ์ ์์ฑ๋ถํฐ ์๋ฉธ๊น์ง ์๊ธฐ๋ ์ผ๋ จ์ ์ด๋ฒคํธ ์ ๋๋ค.SwiftUI์ ๊ฐ ๋ทฐ์๋ ์ฐ๋ฆฌ๊ฐ ๊ด์ฐฐํ๊ณ ์กฐ์ํ ์ ์๋ ์ธ ๊ฐ์ง ์ฃผ์ ๋จ๊ณ๊ฐ ์์ต๋๋ค.์ด ์ธ ๊ฐ์ง ๋จ๊ณ๋ Appearing, Updating, Disappearing ์ ๋๋ค.AppearingAppearing์ ๋ทฐ ๊ทธ๋ํ์ ๋ทฐ๋ฅผ ์ฝ์ ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.์ด ๋จ๊ณ์์ ๋ทฐ๋ ์ด๊ธฐํ๋.. [iOS] ์ด๋ฏธ์ง์ ์ํ๋ ๋ชจ์์ ๋ง์คํฌ ์ ์ฉํ๊ธฐ ์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค~!UI ๊ตฌํ์ ๊ดํ ๊ฒ์๊ธ์ ์ฒ์ ์ ๋ก๋ ํ๋ ๊ฒ ๊ฐ์๋ฐ์, ๋ณต์กํ UI๋ฅผ ๊ตฌํํ๋ฉด์ ๊ฒช์๋ ๋ฌธ์ ๋ค ํน์ ๊ณ ๋ฏผํ๋ ์ ์ ๋ธ๋ก๊ทธ์๋ ๊ธฐ๋ก์ผ๋ก ๋จ๊ฒจ๋์์ผ๋ฉด ์ข์์ ๊ฑธ,, ํ๋ ์๊ฐ์์์ ํ๋ก์ ํธ์์ ๊ฝค๋ ๊ณ ๋ฏผํ๋ ๊ณผ์ ์ ํฌ์คํ ํ๋ ค๊ณ ํฉ๋๋ค..! (๊ณต์ ํ๋ฉด ์ข์ผ๋๊น์..ใ )์์ผ๋ก๋ ์ด์ ํด๊ฒฐ์ ๋ํ ๋ด์ฉ๋ ํฌ์คํ ์ ํด๋ณด๋๋ก ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค!๋ณต์กํ ๋ชจ์์ ๋ง์คํฌ๋ฅผ ์ด๋ฏธ์ง์ ์ ์ฉํ๊ธฐ์ด๋ฒ ํฌ์คํ ์์๋ ์ด๋ฏธ์ง์ ์ฌ๊ฐํ, ์์ฒ๋ผ ๊ฐ๋จํ ๋ํ์ด ์๋๋ผ ๋ณต์กํ ๋ชจ์์ ๋ง์คํฌ๋ฅผ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ณต์ ํด๋ณด๊ฒ ์ต๋๋ค!!์์ ์ ์ฐธ์ฌํ์๋ ํ๋ก์ ํธ์์ ์๋น์ค์ ์ฌ๋ณผ์ธ ๋ง์๋ฉ๋ก ๋ชจ์์ด ์ฌ๋ฌ ํ๋ฉด์์ ๋ณด์์ต๋๋ค.ํนํ, ๋ง์๋ฉ๋ก ๋ชจ์์ ๋ง์คํฌ๊ฐ ์ ์ฉ๋ ์ด๋ฏธ์ง๊ฐ ํ๋กํ ์ฌ์ง์ผ๋ก ์ ์ฉ๋์ด ์ฑ ๊ณณ๊ณณ์์ ์์ฃผ ์ฌ์ฉ๋์์ต๋.. [Combine] WWDC19 - Introducing Combine ์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค:) ์ง๋ ๊ธ์์ Combine์ ํต์ฌ์ด์ ๊ธฐ๋ณธ์ธ Publisher, Subscriber์ ๋ํด ๊ณต์ ๋ฌธ์๋ฅผ ํ ๋๋ก ์ ๋ฆฌํด๋ณด์๋๋ฐ์, Combine์ ๋ํด ๋ ๊น๊ฒ ํ์ตํ๊ธฐ์ ์์ WWDC19 - Introducing Combine ์์์ ๋ณด๊ณ ๋ด์ฉ์ ์ ๋ฆฌํด๋ณด์์ต๋๋ค. ํด๋น ์ธ์ ์์๋ Publisher, Subscriber, Operator ์ ๋ํด ๊ฐ๊ด์ ์ธ ๋ด์ฉ์ ๋ด๊ณ ์์ด Combine ํ๋ ์์ํฌ์ ๋ํด ํ ๋ฒ ํ์ด๋ณผ ์ ์์๋ ์ธ์ ์ด์์ต๋๋ค. Combine์ด๋? A unified declarative API for processing values over time. Combine์ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ๊ฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ํตํฉ๋ ์ ์ธ์ API์ ๋๋ค. Key Concepts Publish.. [Combine] Combine ์์ํ๊ธฐ - Publisher์ Subscriber ์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค! ๊ต์ฅํ ์ค๋๋ง์ ๊ธ์ ์ฐ๋๋ฐ... ์ปด๋ฐ์ธ์ผ๋ก ๋์์์ต๋๋ค ใ ... ๋์๋ฆฌ ํ์ ์ผ๋ก ๋ฐ๋น ์ ๋ธ๋ก๊ทธ์ ๊ณต๋ถํ ๋ด์ฉ ์ ๋ฆฌ๋ฅผ ๋ชปํ๋๋ฐ, ๋์๋ฆฌ ํ๊ธฐ๋ ๊ฐ์ ธ์ค๊ณ ๊ทธ๋์ ๊ณต๋ถํ ๋ด์ฉ๋ ์ ๋ฆฌํด์ ์ฌ๋ ค๋ณด๋๋ก ํ ๊ฒ์! ๋์๋ฆฌ ํ์ ์์ SwiftUI + Combine ์ผ๋ก ๊ฐ๋ฐ์ ํ๊ฒ ๋์๋๋ฐ์, ์๋ก์ด ์คํ์ ๋์ ํ๋ ์ฌ๋ฐ์์ต๋๋ค๐ ๋ ๊น๊ฒ ๊ณต๋ถํด๋ณด๋ฉด์ ๋ด์ฉ์ ๋ฆฌ๋ฅผ ํด๋ณด๋ ค๊ตฌ์ ! ์ค๋์ ์ปด๋ฐ์ธ ์์ํ๊ธฐ๋ก Publisher์ Subscriber์ ๋ํด ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค. Combine ์ด๋? Combine์ Apple์์ ๊ณต์์ ์ผ๋ก ์ ๊ณตํ๋ ๋น๋๊ธฐ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ์ํ ํ๋ ์์ํฌ์ ๋๋ค. ๋ ๋ค๋ฅธ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋๊ตฌ์ธ RxSwift๋ third-party ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด์ง๋ง Combine์ Apple์์ ๊ณต์.. ์ด์ 1 2 3 4 5 ๋ค์