App ์ ์๋ช ์ฃผ๊ธฐ๋ ๋ค์ ๊ณผ์ ์ ํฌํจํ๋ค. App ์ ์คํ ยท ์ข ๋ฃ, App Foreground ยท Background ์ํ, ์์คํ ์ด ๋ฐ์์ํค๋ event ์ ์ํด App ์ํ ์ ํ
AppDelegate.swift ๋ ํฌ๊ฒ ๋ ๊ฐ์ง ๊ธฐ๋ฅ์ ํ๋ค. ์ ํ๋ฆฌ ์ผ์ด์ ์ด ๊ทธ๋ ค์ง window ๋ฅผ ์์ฑํ๊ณ ์ํ๊ฐ ๋ณํ ๋ ๋ฐ์ํ ์ ์๊ฒ ํ๋ค. AppDelegate ํด๋์ค๋ UIApplicationDelegate ํ๋กํ ์ฝ์ ์ฑํํด์ผํ๋ค.
ํน์ Swift ๋ฒ์ ๋๋ ํน์ ํ๋ซํผ ๋ฐ OS ๋ฒ์ ๊ณผ ๊ด๋ จ๋ ์ ์ธ์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๋ํ๋ธ๋ค. ์ฌ๋ฌ ํ๋ซํผ์์ ์๋ก ๋ค๋ฅธ ๋ ผ๋ฆฌ ์ฒ๋ฆฌ๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด์ ํ์ํ๋ค.
์ฑ์ ์คํํ๋ ๋์ ์ง์์ ์ผ๋ก ํค-๊ฐ ์์ ์ ์ฅํ๋์ฌ์ฉ์์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ธํฐํ์ด์ค๋ฅผ ๋งํ๋ค.
์๋ฒ์์ ์ฌ์ฉ์ ์ฅ์น๋ก ์ฌ์ฉ์ ๋๋ฉด ์๋ฆผ์ ํธ์ํ๊ฑฐ๋ ์ฑ์์ ๋ก์ปฌ๋ก ์์ฑํ๋ ๊ฒ์ ๋งํ๋ค.
์น์ฌ์ดํธ์์ ํฌ๋กค๋งํ๋ฉฐ ์ ๋ณด๋ฅผ ์์งํ๋ ๊ฒ์์์ง ํฌ๋กค๋ฌ(๋๋ ๊ฒ์ ๋ก๋ด)๊ฐ ์ก์ธ์คํ๊ฑฐ๋ ์ ๋ณด์์ง์ ํด๋ ๋๋ ํ์ด์ง๊ฐ ๋ฌด์์ธ์ง ํด์๋ ์๋๋ ํ์ด์ง๊ฐ ๋ฌด์์ธ์ง ์๋ ค์ฃผ๋ ์ญํ ์ ํ๋ .txt ํ์ผ์ด๋ค.
๊ณ ํ์ง ์ด๋ฏธ์ง๋ฅผ ๋ฌด๋ฃ๋ก ์ด์ฉํ ์ ์๋ ํ๋ซํผ์ผ๋ก ํ ๋ฒ์ฏค ๋๊ตฌ๋ ์ฌ์ฉํด๋ดค์ ๊ฒ์ด๋ค.
์คํ ๋ฆฌ๋ณด๋์์ ๋ทฐ ์ปจํธ๋กค๋ฌ ์ฌ์ด์ ํ๋ฉด์ ํ์ ์ํด ์ฌ์ฉํ๋ ๊ฐ์ฒด์ด๋ค. ๋ณ๋์ ์ฝ๋ ์์ด๋ ์คํ ๋ฆฌ๋ณด๋์์ ์ธ๊ทธ๋ฅผ ์ฐ๊ฒฐํ๋ฉด ๋ทฐ ์ปจํธ๋กค๋ฌ ์ฌ์ด์ ํ๋ฉด์ ํ์ ๊ตฌํํ ์ ์๋ค.
Apple Documentation ์์๋ reduce(\_:\_:) ์ reduce(into:\_:) ์ ๋ํด ๋ค์๊ณผ ๊ฐ์ด ์ ์๋์ด ์๋ค.์ฃผ์ด์ง ํด๋ก์ ๋ฅผ ์ด์ฉํด ์์ด์ ์์๋ค์ ์กฐํฉํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค๋ ์๋ฏธ์ด๋ค.
๊ณ ์ฐจํจ์๋ ๋ค๋ฅธ ํจ์๋ฅผ ์ ๋ฌ์ธ์๋ก ๋ฐ๊ฑฐ๋ํจ์ ์คํ์ ๊ฒฐ๊ณผ๋ฅผ ํจ์๋ก ๋ฐํํ๋ ํจ์๋ฅผ ๋งํ๋ค. Swift ์ ํจ์(ํด๋ก์ ) ๋ ์ผ๊ธ ์๋ฏผ์ด๊ธฐ ๋๋ฌธ์ ํจ์์ ์ ๋ฌ์ธ์๋ก ์ ๋ฌํ ์ ์์ผ๋ฉฐ, ํจ์์ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ๋ฐํํ ์ ์๋ค.
์นํ์ด์ง์ ์ ์ํ์ ๋ ์๋จ์ ๋ณด์ฌ์ง๋ ์์ด์ฝ์ ๋งํ๋ค. ์ด ์์ด์ฝ์ ์ฆ๊ฒจ์ฐพ๊ธฐ์ ์นํ์ด์ง๋ฅผ ๋ฑ๋กํ ๋๋ ์ฌ์ฉ๋๋ค. ์น ์ฌ์ดํธ๋ฅผ ๋ํํ๋ ๋ก๊ณ ์ ๊ฐ๋ ๊ณผ ๋น์ทํ๋ฉฐ, ์ฌ์ดํธ์ ์ฑ๊ฒฉ์ ๋๋ฌ๋ด๊ธฐ๋ ํ๋ค.
๊ธฐ์กด์ ์กด์ฌํ๋ ๋ฐ์ดํฐ ํ์ ์ ์๋ก์ด ์ด๋ฆ์ ๋ถ์ผ ์ ์๋ ๊ธฐ๋ฅ์ด๋ค. typealias ๊ฐ ์ ์๋๋ฉด ํ๋ก๊ทธ๋จ์ ์กด์ฌํ๋ ํ์ ์ ๋์ ํ์ฌ ๋ค๋ฅธ ์ด๋ฆ์ ์ฌ์ฉํ ์ ์๋ค. ์๋ก์ด ํ์ ์ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ ์๋ ์กด์ฌํ๋ ํ์ ์ ์ด๋ฆ์ ๋ฐ๊พธ๋ '์นํ' ๊ฐ๋ ์ด๋ค.
์ฌ๋ฌ ๊ฐ๋ฐ์๋ค์ด ์ด์ฉํ๊ณ ์๋ Github ์๋ ํน๋ณํ ๊ธฐ๋ฅ์ด ์๋ค. Design Github profile using README.md ๋ผ๋ ๊ธฐ๋ฅ์ด๋ค. ์ด ๊ธฐ๋ฅ์ ๋ํด์ ์ด๋ฏธ ์๊ณ ์๋ ์ฌ๋๋ค๋ ๋ง์ํ ์ง๋ง์ข ๋ ์ ํ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค.
๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ ํจํด์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ๋์์ ์ค๋ค. RxSwift๋ Swift ์์ Rx๋ฅผ ๊ตฌํํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ณ ,RxCocoa๋ UIKit๊ณผ Cocoa ํ๋ ์์ํฌ ๊ธฐ๋ฐ ๊ฐ๋ฐ์ ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
ํด๋ก์ ๋ ์ฃผ๋ณ์ ์ปจํ ์คํธ์ ์๋ ์์๋ ๋ณ์๋ค์ ์บก์ณํ ์ ์๋ค. ์์์ ๋ณ์๋ฅผ ์ ์ํ ์๋ ๋ฒ์๊ฐ ๋ ์ด์ ์กด์ฌํ์ง ์๋๋ผ๋๊ทธ ์์์ ๋ณ์์ ๊ฐ์ ์ฐธ์กฐํ๊ณ ์์ ํ ์ ์๋ค.
XIB, NIB, Storyboard ๋ MVC ๋์์ธ ํจํด์ ์ํด ๋ทฐ ์ฝ๋์ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ถ๋ฆฌํ๋ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด์ง ํ์ผ๋ก ํ๋ฉด์ ๊ตฌ์ฑํ ๋ ์ฌ์ฉ๋๋ค.
ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ Github ๊ณผ ๊ฐ์ ๊ณต๊ฐ๋ ๊ณต๊ฐ์ API Key ๋ฅผ ๊ทธ๋๋ก ์ฌ๋ฆฌ๊ฒ ๋๋ฉด ์ฌ์ฉ์๋ค์ด API ์ Key ๋ฅผ ํ์ธํ ์ ์๋ค๋ ์ํ์ด ์๋ค.
MVVM ํจํด์ MVC ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ๋์์ธ ํจํด์ด๋ค. MVC ์ ๋ค๋ฅด๊ฒ Controller ๊ฐ ์๋ ViewModel ๊ณ์ธต์ ๊ฐ์ง๊ณ ์๋ค.
์น ์ ์ฒด์์ ๋ผ์ด๋ธ ๊ธฐ์ฌ๋ฅผ ๊ฒ์ํ๊ธฐ ์ํ ๊ฐ๋จํ HTTP REST API ์ด๋ค.
ARC ๋ ์ปดํ์ผ๋ฌ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋ฐํ ์ฝ๋๋ฅผ ๋ฃ์ด์ฃผ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ค๋ฒํค๋์์ ์์ ๋กญ๋ค๋ ํน์ง์ด ์๋ค. ํนํ, ๋ฉ๋ชจ๋ฆฌ์ CPU ๊ฐ ๋ฐ์คํฌํ์ ๋นํด ์ ํ์ ์ธ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์๋ ๋ ์ค์ํ ๋ฌธ์ ์ด๊ณ ๊ทธ๋งํผ ์ฑ๋ฅ ์ธก๋ฉด์์ ์ด๋์ด๋ผ๊ณ ํ ์ ์๋ค.