๐ Save Color in UserDefaults from Color Picker variable in Color Data private let COLOR_KEY = "COLOR" private let userDefaults = UserDefaults.standard saveColor func saveColor(color: Color) { let color = UIColor(color).cgColor if let components = color.components { userDefaults.set(components, forKey: COLOR_KEY) } } loadColor func loadColor() -> Color { guard let colorComponenets = userDefaults...
๐ main & UIApplication @main ํ๋ก๊ทธ๋จ์ ์ง์ ์ ์ ๋ํ๋ธ๋ค. ์ด๋ ํ๋ก๊ทธ๋จ์ด๋ ์ง ์์์ ์ธ Entry Point๊ฐ ์กด์ฌํด์ผํ๋ค. Swift์์๋ @main์ ํตํด์ ์ด๋์๋ถํฐ ์ด ์ฑ์ด ์ต์ด ์คํ๋๊ณ ์์๋ ์ง๋ฅผ ๋ช ์ํด์ฃผ๋ ํค์๋์ด๋ค. ์ด ํค์๋๋ Swift 5.3 ์ด์(Xcode 12)๋ถํฐ ์ฌ์ฉ๋ ํค์๋๋ก ๋ฐ๋ก ์ด์ด์ ์ค๋ช ํ๊ฒ ์ง๋ง @main ํค์๋๊ฐ ๋์ค๊ธฐ ์ ์๋ @UIApplcationMain ํค์๋๋ฅผ ์ฌ์ฉํ๋ค. > UIKit์ ๊ฒฝ์ฐ AppDelegate๊ฐ ์ฌ์ค์ App Life Cycle์ ๊ด๋ฆฌํ๋ ๋ชจ๋ ์ฃผ์ฒด์ด๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์ @main ํค์๋๊ฐ ๋ถ๋๋ค. import UIKit @main class AppDelegate: UIResponder, UIApplicationDelegate..
๐ ์ด๊ธฐํ์ ๋ํด์ AppDelegate() init() AppDelegate๋ฅผ ์ด์ฉํ ์ด๊ธฐํ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ค AppDelegate์ ์ญํ (์ง์ ์ )์ ํ๋ ๊ฒ์ด ๋ฐ๋ก ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ๊ถ์ฅ๋์ง๋ ์๋ ๋ฐฉ๋ฒ์ด๋ค. @main struct PushMessageApp: App { var body: some Scene { WindowGroup { ContentView() } } } ์ ์ฝ๋์์ ๋ณด์ด๋ App ํ๋กํ ์ฝ ์์ฒด๊ฐ ์ฑ์ ๊ตฌ์ฑ์ ๋ด๋นํ๋ ๊ตฌ์กฐ์ฒด์ ํ๋กํ ์ฝ์ ์ง์ ํด์ฃผ์ด์ ์ฑ์ ์์(Presenting) ์ง์ ์ ์ ํด์ฃผ๋ ์ญํ ์ ํ๊ฒ ๋๋ค. ๋ํ @main์ ํตํ์ฌ ์ฑ์ด ์์๋๊ณ ๊ฐ์ฅ ๋จผ์ ๋ค์ด๊ฐ์ผํ๋ ๋ถ๋ถ์ ๋ช ์ํด์ฃผ๊ณ ์๊ธฐ ๋๋ฌธ์ AppDelegate๊ฐ ํ์ํ์ง ์๋ค. ๊ทธ๋ฌ๋ ์ฑ์ ์ด๊ธฐํ ์ด์ธ์๋ AppDele..
๐ฑBrain Buddy โ๏ธ 2023๋ 5์ 17์ผ ~ 2023๋ 6์์ค ( ์ฝ 3์ฃผ ) - ๊ธฐํ - ๊ฐ๋ฐ๊ณผ์ - ์๋ฌ์ฌํญ ๊ธฐํ ์ฌ์ค ๊ธฐํ์๋๋ ํ๋ถ ์์ ์ข ์ด์ ์ ์ด๊ฐ๋ฉฐ ์๊ธฐํ๋ฉฐ ๊ณต๋ถํ๋ ๋์ ๋ชจ์ต์ ๋ ์ฌ๋ฆฌ๊ณ ๊ธฐํํ๊ฒ ๋์๋ค. ์ ๊ณต์์ ์ ์๋ ๋ด์ฉ์ ๋ฐฑ์ง์ ์ฎ๊ฒจ ์ ์ด๊ฐ๋ฉฐ ์ธ์ฐ๊ณ ๋ฌ์๋, ์ด๋ฅผ ๋ค์ ๋น์นธ์ ๋ด๊ฐ ๋ง๋ค์ด์ ์ ์ธ์ ๋ ์ํ ๋ณด๊ณ ์ถ์๋๋ฐ ๋น์นธ์ ๋ง๋ค์๊ฐ์ ์ฐจ๋ผ๋ฆฌ ์กฐ๊ธ ๋ ์ธ์ฐ๋๋ฐ ์ง์ค์ ํด๋ณด๊ณ ์ ํ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋์ ์ฌ์ฉ์๊ฐ ์ค์ค๋ก ๊ณต๋ถํ๋ฉฐ ๋ฐฑ์ง์ ์ ์ ๋ด์ฉ๋ค์ ์ฌ์ง์ผ๋ก ์ฐ์ผ๋ฉด ํด๋น ๋ด์ฉ์ค์์ ๋๋ค์ผ๋ก ๋น์นธ์ ์์ฑํด์ฃผ๋ฉฐ ๋น์นธ ๋ด์ฉ์ ์ฑ์๋ณผ ์ ์๋ ์ฑ์ ์๊ฐํ๊ฒ ๋์๋ค. ๋ํ ์ค์ ๋ก ํ์ ์ด์ฉํด ์ํ์ ๋ณด๋ ๊ฒ๊ณผ ๊ฐ์ ๋๋์ ์ฃผ๊ธฐ ์ํด์ ํ ์คํธ ์ ๋ ฅ๋ณด๋ค๋ ์ ํํ์ฌ์ ์ฌ์ฉํ์ฌ ์ง์ ์ธ ์ ..
๐ ๋น๋ ํด๋ฆฐ Clean Build Folder ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ Image ํ์ผ๋ค์ ์ถ๊ฐํ๊ณ ๊ด๋ฆฌํ๋ ๊ณผ์ ์์ AppIcon ์ด๋ฏธ์ง๋ฅผ ๋ณ๊ฒฝํ๋ ๊ณผ์ ์์ ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๋ฅผ ๋ง๋ฌ๋ค. 2๊ฐ์ง ์ค๋ฅ๊ฐ ๋ฒ๊ฐ์๊ฐ๋ฉด์ ๋จ๊ธฐ๋ ํ๋๋ฐ, App ์์ด์ฝ ์ด๋ฏธ์ง๋ฅผ ํฝ์ ๋ณ๋ก ๋ค์ด๋ฐ์์ ํด๋ ๊ทธ๋๋ก ์ถ๊ฐํ์์๋ ์ด์ ๊ฐ์ ์ค๋ฅ๋ฅผ ๋ง๋์ Build Success๊ฐ ์ด๋ฃจ์ด์ง์ง ์์๋ค. AppIcon ๋ค์ด๋ฐ๋ ์๋ชป๋์ง์์์๊ณ , 152.png ํ์ผ๋ ์ ์์ ์ผ๋ก ๋์๊ฐ ์์๋ค. ์ด ๋ ํด๊ฒฐ๋ฐฉ๋ฒ์, ์ด๋ฏธ์ง๋ฅผ ๊ต์ฒดํ๊ณ ์๋ก ์ถ๊ฐํ๋ ํ์๋ฅผ ํ์ง๋ง๊ณ Product - Clean Build Folder ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ค. ์ฐพ์๋ณด๋ Xcoce์์ ์์ฒด์ ์ผ๋ก ์ง์ํด์ฃผ๋ ๊ธฐ๋ฅ์ธ๋ฐ, 100% ์๋ฒฝํ๊ฒ ์ง์์ง๋๊ฒ์ ์๋๋ผ๊ณ ํ์ง๋ง ์ด๋ฏธ์ง ๊ด๋ จํ ์๋ฌ..
์๋ช ์ฃผ๊ธฐ ( LifeCycle ) ์๋ช ์ฃผ๊ธฐ๋ผ๋ ๊ฒ์ ์ฑ์ ์ต์ด ์คํ๋ถํฐ ์ฑ์ด ์์ ํ ์ข ๋ฃ๋๊ธฐ๊น์ง ์ฑ์ด ๊ฐ์ง๋ ์ํ์ ๊ทธ ์ํ๋ค ์ฌ์ด์ ์ ์ด๋ฅผ ๋งํ๋ค. ์ฑ์ ์ํ๋ ์ฑ์ด ํ์ฌ ์ด๋ ํ ๊ฒ์ ํ ์ ์๋๊ฐ๋ฅผ ๊ฒฐ์ ํ๋ค. ์ฑ์ ์๋ช ์ฃผ๊ธฐ ( App's Life Cycle ) App์ ์๋ช ์ฃผ๊ธฐ๋ APP์ ์คํ/์ข ๋ฃ ๋ฐ App์ด Foreground/Background ์ํ์ ์์ ๋, ์์คํ ์ด ๋ฐ์์ํค๋ event์ ์ํด App์ ์ํ๊ฐ ์ ํ๋๋ ๊ณผ์ ์ ๋งํ๋ค. ์นด์นด์คํก ์ฑ์ผ๋ก ์นดํก์ ํ๊ณ ์๋ ๋์ค์ ์ ํ๊ฐ ์์ ๋ ์ฑ์ด ํ๋ฉด์์์ ๋ณด์ฌ์ง์ง ์๋ ์ํ์ธ Background ์ํ์ ์ฑ์ด ํ๋ฉด์ ์ฌ๋ผ์์๋ ์ํ์ธ Foreground ๋ฑ๊ณผ ๊ฐ์ ์ํ๋ค์ ์ ์ํ ๊ฒ์ด๋ค. iOS์์ ์ฑ์ ์คํํ๋ฉด ๋ฌด์จ ์ผ์ด ๋ฒ์ด์ง๊น ? iO..
์ฝ๋๋ก Navigation ์์ญ ์์ ์ ๋ฐ๋ณตํ๋ค๊ฐ ์๊ฒ ๋ ์ฌ์ค .. ์๋๋ Navigation Back ๋ฒํผ์ ํตํด ํ๋ฉด์ ์ ํํ๋ค๊ฐ ๋์์ค๋ฉด, ํด๋น ๋ฒํผ์ด ๋ณด์ด์ง ์๋ ํ์๋๋ฌธ์ ์์ ์ ํ๋ ค๊ณ ํ์๋๋ฐ, ์ด๋ฅผ ์์ ํ๋ค ์ฐ์ฐํ ํ์ํ๋ ๊ตฌํ์ ํ๊ฒ ๋์๋ค. Navigation Back Button A ํ๋ฉด์์ Navigation ๋ฒํผ์ ํตํด B ํ๋ฉด์ผ๋ก ์ ํํ์ ๋, Bํ๋ฉด์์ ๋ค์ A ํ๋ฉด์ผ๋ก ๋์๊ฐ๋ Navigation ์์ญ์ Back ๋ฒํผ์ ์ปจํธ๋กค๋ฌ์ ํ์ดํ์ ๋ณด์ด์ง ์๊ณ , ํ์ดํ ๋ชจ์๋ง ๋ณด์ด๊ฒ ํ๊ณ ์ถ์๋ค. ์ผ๋จ ๋ค๋ก๊ฐ๋๋ฒํผ์ด ์ฌ๋ผ์ง๋ ํ์์ ์์ธ ๋ค๋น๊ฒ์ด์ ๋ฐ์ ์คํ์ผ๊ณผ ๋ฒํผ ์์ฑ์ด ์ ํํ๊ฒ ์ค์ ๋์ด์๋์ง ํ์ธํด์ผ ํ๋ค. ๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ฅผ ์ฌ์ฉํด์ ๋ค๋น๊ฒ์ด์ ๋ฐ์ ์คํ์ผ๊ณผ ๋ฒํผ ์์ฑ์..
๐ GCD ( Grand Central Dispatch) ๋? ๋ค์์ Thread์ ์ ์ ํ๊ฒ ์์ ์ ๋ถ๋ฐฐํ๊ธฐ ์ํด ํด์ผ ํ ์ผ์ ๋ฌด์์ผ๊น ? ๋ฐ๋ก ํ ์ผ(task)๋ฅผ Queue์ ๋ฃ๋ ๊ฒ์ด๋ค. ๋ฃ์ด์ผ ๋๋ ๊ฒ์ด๋ผ๋ฉด ๋ค์์ Thread์ ์ ์ ํ๊ฒ ์์ ์ ๋ถ๋ฐฐํ๋ ์ผ์ ๋๊ฐ ํ ๊ฒ์ธ๊ฐ ? ๋ฐ๋ก GCD๋ Queue์ ๋ฃ์ผ๋ฉด ๊ทธ์ ๋ฐ๋ฅธ ์ค๋ ๋๋ฅผ ์ ์ ํ๊ฒ ์์ฑํด ๋ถ๋ฐฐํด์ฃผ๋ ์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ GCD์์ ์ฌ์ฉํ๋ Queue ์ด๋ฆ์ด Dispatch Queue์ด๋ค. ๊ทธ๋ผ Dispatch Queue์ ์์ ์ด ์ถ๊ฐ๋๋ฉด GCD๋ ์์ ์ ๋ง๋ ์ค๋ ๋๋ฅผ ์๋์ผ๋ก ์์ฑํด์ ์คํํ๊ณ , ์์ ์ด ์ข ๋ฃ๋๋ฉด ์ค๋ ๋๋ฅผ ์ ๊ฑฐํ๊ฒ ๋๋ค. ๐ Dispatch Queue๋? ์ฑ์ ๋ฉ์ธ ์ค๋ ๋๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋์์ ์์ฐจ์ ์ผ๋ก ๋๋ ๋์์ ์..