๋ชฉํ: Xcode์์ UIKit ํ๋ ์์ํฌ๋ฅผ ์ด์ฉํด์ ์คํ ๋ฆฌ๋ณด๋ ํน์ ์ฝ๋๋ฒ ์ด์ค๋ก ํฌ์ผ๋ชฌ ์ ํ๋ฒํธ๋ถ๋ฅผ ๋ง๋ญ๋๋ค.
-
ํ์:
[๋ ๋ฒจ] ์์ ๋ด์ฉ - ํ์ ์ด๋ฆ- ์:
[Lv 1] ํ์๊ธฐ๋ฅ ๊ตฌํ - sonny
- ์:
-
์์ ์ธ๋ถ ์ฌํญ: ๊ตฌํํ ์ฃผ์ ๊ธฐ๋ฅ๊ณผ ๋ก์ง์ ๋ํ ์์ฝ์ ์์ฑํฉ๋๋ค.
-
Github ์ปค๋ฐ ์ปจ๋ฒค์ ๊ฐ์ด๋ (์ด๋ชจ์ง ๋ฒ์ )
-
๊ธฐ๋ณธ ์ปค๋ฐ ํ์
- โจ
feat: ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ - ๐
fix: ๋ฒ๊ทธ ์์ - ๐
docs: ๋ฌธ์ ์์ - ๐
style: ์ฝ๋ ํฌ๋งทํ , ์ธ๋ฏธ์ฝ๋ก ๋๋ฝ, ์ฝ๋ ๋ณ๊ฒฝ์ด ์๋ ๊ฒฝ์ฐ - โป๏ธ
refactor: ์ฝ๋ ๋ฆฌํฉํ ๋ง - โ
test: ํ ์คํธ ์ฝ๋, ๋ฆฌํฉํ ๋ง ํ ์คํธ ์ฝ๋ ์ถ๊ฐ - ๐จ
chore: ๋น๋ ์ ๋ฌด ์์ , ํจํค์ง ๋งค๋์ ์์
- โจ
-
์์ฃผ ์ฌ์ฉ๋๋ ์ถ๊ฐ ํ์
- ๐
deploy: ๋ฐฐํฌ - โก๏ธ
perf: ์ฑ๋ฅ ๊ฐ์ - ๐ง
config: ์ค์ ํ์ผ ์์ - ๐ฆ
build: ๋น๋ ๊ด๋ จ ์์ - ๐
merge: ํฉ๋ณ - โช๏ธ
revert: ๋๋๋ฆฌ๊ธฐ
- ๐
- Fork๋ก ๊ฐ์ ธ์ค๊ธฐ: ๊ฐ ํ์์ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ Forkํ์ฌ ์์ ์ ๊ฐ์ธ ๋ ํฌ์งํ ๋ฆฌ๋ก ๊ฐ์ ธ์ต๋๋ค.
- ๋ธ๋์น ์์ฑ: Forkํ ๊ฐ์ธ ๋ ํฌ์งํ ๋ฆฌ์์ ๊ฐ์์ ์ด๋ฆ์ ๋ด ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค.
- Pull Request: ๊ฐ์์ ๋ธ๋์น์์ Pull Request๋ฅผ ์์ฑํด ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํฉ๋๋ค. ๋ชจ๋ ํ์์ด Pull Request์ ์ฝ๋ฉํธ๋ฅผ ์ถ๊ฐํ์ฌ ํผ๋๋ฐฑ์ ์ ๊ณตํฉ๋๋ค.
- ์์ ๋ฐ Merge: ํผ๋๋ฐฑ์ ๋ฐ์ํ์ฌ ์์ ํ ํ, ํ์๋ค์ ๋์๋ฅผ ์ป์ด merge๋ฅผ ์งํํฉ๋๋ค.
-> ํ ๋ฆฌํ์คํธ๋ฅผ ํ ํ Mergeํ์ง ์์์ฑ ์ปค๋ฐ-ํธ์๋ฅผ ํ๋ฉด ๊ธฐ์กด ํ ๋ฆฌํ์คํธ์ ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ด ๊ฒฝ์ฐ ์๋ก์ด ๋ธ๋์น๋ฅผ ๋ง๋ญ๋๋ค.
- Level 1:
UILabel,UITableView,UIButton๋ฑ์ ์ด์ฉํด ํ ์ด๋ธ ๋ทฐ ๋ง๋ค๊ธฐ - Level 2: ๏ฟฝ
UIViewController๋ฅผ ์๋ก ์ถ๊ฐํ์ฌ ์ฐ๋ฝ์ฒ ์ถ๊ฐ ํ๋ฉด์ ๊ตฌํํ๊ธฐ(ํ์ผ ์ด๋ฆ: PhoneBookViewController.swift) - Level 3: ์๋จ ๋ค๋น๊ฒ์ด์ ๋ฐ ์์ญ์ ๊ตฌํํ๊ธฐ (์ ๋ชฉ, ์ ์ฉ ๋ฒํผ ๋ฑ)
- Level 4: API๋ฅผ ์ฐ๊ฒฐํ์ฌ ๋ฒํผ์ ๋๋ ์ ๋ ๋๋คํ ์ด๋ฏธ์ง๊ฐ ์์ฑ๋๋๋ก ๊ตฌํํ๊ธฐ
- Level 5: ์ ์ฉ ๋ฒํผ์ ๋๋ฅด๋ฉด ์ฐ๋ฝ์ฒ ๋ฐ์ดํฐ(์ด๋ฆ/์ ํ๋ฒํธ/ํ๋กํ ์ด๋ฏธ์ง)๋ฅผ ๋์คํฌ์ ์ค์ ์ ์ฅํ๋๋ก ๊ตฌํํ๊ธฐ
- Level 6: ์ฐ๋ฝ์ฒ๋ฅผ ์ถ๊ฐํ ํ ๋ฉ์ธํ๋ฉด์ ์ฐ๋ฝ์ฒ๊ฐ ํญ์ ์ด๋ฆ ์์ผ๋ก ์ ๋ ฌ๋๋๋ก ๊ตฌํํ๊ธฐ
- Level 7: ํ
์ด๋ธ๋ทฐ์ ์
์ ํด๋ฆญํ์ ๋
PhoneBookViewControllerํ์ด์ง๋ก ์ด๋๋๋๋ก ๊ตฌํํ๊ธฐ - Level 8: ํ ์ด๋ธ๋ทฐ์ ์ ์ ํด๋ฆญํด์ ํ๋ฉด์ ์ด๋ํ์ ๋, ์ฐ๋ฝ์ฒ ํธ์ง ํ์ด์ง์์ ์ค์ ๋ก ๊ธฐ๊ธฐ ๋์คํฌ ๋ฐ์ดํฐ์ Update๊ฐ ์ผ์ด๋๋๋ก ๊ตฌํํ๊ธฐ
Level 1 ~ 8 ๊น์ง ๊ตฌํํ๊ณ ๋ ์ฌ์ ๊ฐ ๋์๋ ๋ถ๋ค์ ์ฌํ๊ณผ์ ์ ๊ณ ๋ฏผํด๋ณด๊ธฐ
- ํฌ์ผ๋ชฌ์ ๋ฉ์น๊ฐ ํด ๋, ์ด๋ฏธ์ง ์์ญ์ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด ๋, ์ ๋ฐ์ ๋ฒ์ด๋์ง ์๋๋ก ๊ตฌํํด ๋ด ์๋ค!!
- ์ฐ๋ฝ์ฒ๋ฅผ ๋งค์ฐ ๋ง์ด ์ถ๊ฐํ์ ๊ฒฝ์ฐ(์: 20๊ฐ ์ด์) ํ
์ด๋ธ ๋ทฐ ์คํฌ๋กค์ ๋น ๋ฅด๊ฒ ๋ด๋ฆฌ๋ฉด ์ด๋ฏธ์ง๊ฐ ๊ฒน์ณ ๋ณด์ด๊ฑฐ๋ ํ
์คํธ๊ฐ ์ ๋๋ก ๋
ธ์ถ๋์ง ์๋ ๋ฌธ์ ๊ฐ ์์ ์ ์์ต๋๋ค.
- ์ด ๋ฌธ์ ๋
prepareForReuse์ ๊ฐ๋ ์ ์ฌ์ฉํ๋ฉด ํด๊ฒฐํ ์ ์์ต๋๋ค - ๊ตฌํ์ ๋ชปํ๋๋ผ๋ ๊ฐ๋ ๊ณต๋ถ๋ฅผ ์ถ์ฒ๋๋ฆฝ๋๋ค.
- ์ด ๋ฌธ์ ๋
- ์ด๋ป๊ฒ ๊ตฌํํ๋์ ๋ฐ๋ผ ๋ฉ์ธํ๋ฉด์ ์ฐ์๋จ์
์ถ๊ฐ๋ฒํผ์ด ์ ํด๋ฆญ๋์ง ์๋ ํจ์ ์ ๋น ์ง ์ ์์ต๋๋ค. ์ด๊ฑธ ํด๊ฒฐํด ์ฃผ์ธ์! - ์ฐ๋ฝ์ฒ ์ฑ์๋ ๋ ์ด๋ค ์์ธ ์ฌํญ์ด ์์์ง ์ค์ค๋ก ๊ณ ๋ฏผํด๋ณด๋ฉฐ ์์ ๋ง์ ์ฑ๋ฆฐ์ง๋ฅผ ๋ง๋ค์ด ์ฃผ์ธ์!!
-
๊ฐ๋ฐ ํ๋ก์ธ์ค ๊ฐ์ด๋
-
UIKitํ๋ฉด ๊ตฌ์ฑ ๋ฐ ํ๋ฉด ์ ํ- ํ๋ฉด๊ตฌ์ฑ:
UITableView,UILabel,UITextView,UIButtonํ์ฉ - ํ๋ฉด์ ํ:
์น๊ตฌ ๋ชฉ๋ก ํ์ด์งโ์ฐ๋ฝ์ฒ ์ถ๊ฐ ํ์ด์ง๋ก ์ด๋
- ํ๋ฉด๊ตฌ์ฑ:
-
URLSession/Alamofire๋ณต์ต- ๋คํธ์ํฌ ํต์ ์ ์ด์ฉํด์ ์๋ฒ์์ ๋๋ค ํฌ์ผ๋ชฌ ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฌ์ต๋๋ค.
- ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ชจ๋ ๊ฐ๋ฐํด๋ณด๋ฉด ์ข์ ์ฐ์ต์ด ๋ฉ๋๋ค.
- ํฌ์ผ๋ชฌ API: ํฌ์ผ๋ชฌ API ๋งํฌ
-
ViewController ์๋ช ์ฃผ๊ธฐ๊ฐ๋ - ์น๊ตฌ ๋ชฉ๋ก ํ์ด์ง์ ์ง์
ํ ๋๋ง๋ค ๋ชฉ๋ก์ด
์ด๋ฆ์์ผ๋ก ์ ๋ ฌ๋๋๋ก ํฉ๋๋ค.
- ์น๊ตฌ ๋ชฉ๋ก ํ์ด์ง์ ์ง์
ํ ๋๋ง๋ค ๋ชฉ๋ก์ด
-
CoreData/UserDefaultsํ์ฉ- ์ฐ๋ฝ์ฒ ๋ฐ์ดํฐ๋ฅผ
๊ธฐ๊ธฐ ๋์คํฌ์ ์ ์ฅํฉ๋๋ค. - ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ชจ๋ ๊ฐ๋ฐํด๋ณด๋ฉด ์ข์ ์ฐ์ต์ด ๋ฉ๋๋ค.
- ์ฐ๋ฝ์ฒ ๋ฐ์ดํฐ๋ฅผ
-
-
ํฌ์ผ๋ชฌ JSON Response ํํ
// JSON Response ํํ
{
"id": 25,
"name": "pikachu",
"height": 4,
"weight": 60,
"sprites": {
"front_default": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/25.png"
}
}- ๊ธฐํ: 12์ 12์ผ (๋ชฉ) ๋ฎ 12์๊น์ง ์ ์ถ
- ์ ์ถ๋ฌผ:
- ๊ฐ์ธ๊ณผ์ ๊ฒฐ๊ณผ๋ฌผ ์ ์ถ (GitHub ๋งํฌ)
- ํธ๋ฌ๋ธ์ํ TIL
- ๊ณผ์ ๋ฅผ ์๊ฐํ๋ README
- Ch 3. ์ฑ๊ฐ๋ฐ ์๋ จ ์ฃผ์ฐจ ๊ณผ์