ํฐ์คํ ๋ฆฌ ๋ทฐ
์ด์ ๊น์ง๋ ํ๋ก์ ํธ๋ฅผ ์งํํ ๋ ๋์์ธ ํจํด์ด๋ ์ํคํ ์ณ์ ํฌ๊ฒ ์ ๊ฒฝ์ ์ฐ์ง ์๊ณ ์์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ฒ์ ๋์๋ฆฌ์์ ์ฑ๊ฐ๋ฐ์ ์งํํ๋ฉด์ ๊ฐ์ธ์ฑ๋ณด๋ค ๋น๋ํด์ง ์ฑ๊ฐ๋ฐ์ ์งํํ๋ค๋ณด๋ ์์ฐ์ค๋ฝ๊ฒ
์ข ๋ ํจ๊ณผ์ ์ธ ์ฝ๋๊ด๋ฆฌ๋ฑ์ ์๊ฐํ๊ฒ ๋์๊ณ ๊ทธ๋ ๊ฒ ๋์์ธ ํจํด์๋ํด ์กฐ์ฌ๋ฅผ ํด๋ณด๊ฒ ๋์์ต๋๋ค.
๋์์ธํจํด์ ๋ํด ์กฐ์ฌ๋ฅผ ํ๋ค๋ณด๋, ์๋นํ ๋ง์ ๋์์ธ ํจํด์ด ์๋๋ผ๊ตฌ์?
๊ทธ๋๋ ๊ทธ ์ค์์, ๊ฐ์ฅ ๋์ค์ ์ผ๋ก(?) ๊ณต๋ถ๊ฐ ๋๊ณ ์๋ MVVMํจํด์ ๋ํด ์กฐ๊ธ ๊ณต๋ถ๋ฅผ ํด ๋ณด์์ต๋๋ค.
(์ฌ์ค, ํ์ฌ ์ฑ์ด MVC๋ก ์ ์์ด ๋์ด์๋๋ฐ ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋ง ํ๋ คํ๋ค๋ณด๋ ์๋ฃ๊ฐ ๋ ๋ง์ ๋์์ธ ํจํด์ ๊ณต๋ถํ๊ฒ ๋์์ด์ ใ ,,,)
์์ง ๊ณต๋ถ๊ฐ ์์ ํ ๋ ๊ฒ์ ์๋์ง๋ง, ์ ๊ฐ ์๋ฃ๋ค์ ์ฝ์ด๋ณด๊ณ ์ฐพ์๋ณธ ๋ด์ฉ์ผ๋ก ์ ๋ฆฌ๋ฅผ ํด๋ณผ๊น ํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ชฉํ๋, ์ค์ MVC๋ก ์ ์ํ ์ ์ดํ์ MVVM์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ์ ๋ชฉํ๋ก
์ต๋ํ ์ดํดํ๊ธฐ ์ฝ๊ฒ ์ค๋ช ์ ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค..!!
โป ์์ง ์ ์๊ฒฌ์ด ๋ง์ด ์ข๊ธฐ ๋๋ฌธ์, ๊ธ ์์ฑ์ ์๋ชป ๋ ๋ด์ฉ์ด ์์ ์ ์์ต๋๋ค.
๋ฐ๋ผ์, ์๋ชป๋ ๋ด์ฉ ์ง์ ํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.!!
์ ์ฐ์ , ๋ณธ๊ฒฉ์ ์ผ๋ก MVVM ํจํด์ ์์๋ณด๊ธฐ ์ ์
์ฑ ๊ฐ๋ฐ์ ํด ๋ณด์ จ๋ค๋ฉด ์์ฐ์ค๋ฝ๊ฒ ์ ํ๊ฒ ๋๋ ๋์์ธํจํด์ธ MVCํจํด์ ๋ํด ๋จผ์ ์์๋ณด๊ฒ ์ต๋๋ค.
- wiki -
๋ชจ๋ธ-๋ทฐ-์ปจํธ๋กค๋ฌ (Model - View - Controller, MVC)๋ ์ํํธ์จ์ด ๊ณตํ์์ ์ฌ์ฉ๋๋
์ํํธ์จ์ด ๋์์ธ ํจํด์ด๋ค.
์์ ์ค๋ช ๋ง ๋ณด๋ฉด,
"์ ~ ์ ํํ๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง, ํ๋์ ๋์์ธ ํจํด์ด๊ตฌ๋~,,,,,๊ทธ๋์ ๋ชจ๋ธ ๋ทฐ ์ปจํธ๋กค๋ฌ๊ฐ ๋์ฒด ๋ญ์ง,,?"
๋ผ๋ ์๋ฌธ์ด ์๊ธธ ์ ์์ต๋๋ค!
๋ชจ๋ธ(Model)์ด๋?
Model์ ์ด๋ฆ ๊ทธ๋๋ก, iOS ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ๋ ค๋ Data๋ค์ ๋ชจ์ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
๊ฐ๋ น, ์ฐ๋ฆฌ๊ฐ ๋คํธ์ํฌ ํต์ ์ ์ํด ํน์ URL์ ๋ฐ๋ก ์์๋ก ๋นผ์ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ๊ฐ ์์ฃ ??
static let baseURL : String = "๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๋ URL/"
์ด๋ฌํ, Constantํ ๋ณ์๋ Model์ ์ ์ฅ๋๋ Data์ ์ผ์ข ์ ๋๋ค.
๋, URLSession์ด๋ Alamofire๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ GET ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค๊ณ ์๊ฐ ํด ๋ด ์๋ค.
์ด๋ ์ฐ๋ฆฌ๋ ์๋ฒ์์ ๋ฐ์์ค๋ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์๋์??
๋น์ฐํ ์๋ฉ๋๋ค!!
์๋ฒ์์ Data๋ฅผ ๋ฐ์์ฌ ๋๋ ์ฃผ๋ก jsonํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๊ฒ ๋๋๋ฐ, ์ด๋ ๊ฒ ๋ฐ์์จ Data๋
ํน์ ํ ๋ชจ๋ธ์ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ค์ผ ํฉ๋๋ค.
๋ฐ๋ก ์ด๋ ๊ฒ์!
struct GetSchool : Codable {
let students : Int
let classes : Int
let schoolName : String
}
์ด๋ ๋ฏ, ์๋ฒ์์ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ค์ ๋ก, UI์ ์ ์ฉํ๊ธฐ ์ํ form์ ์ผ์ข ์ด๋ผ๊ณ ํ ์๋ ์๊ฒ ๋ค์!
๊ทธ๋ ๊ธฐ ๋๋ฌธ์, Model์ UI์๋ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ง ์๊ธฐ ๋๋ฌธ์ UI์ Data๋ฅผ ์ด๋ค ์์ผ๋ก ๋ณด์ฌ์ค์ผํ ์ง
๊ณ ๋ฏผ ํ ํ์๊ฐ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด์, ์์์ ์์ฑํ ์ฝ๋๋ฅผ ๋ณด๋ฉด
GetSchool๋ผ๋ Dataํํ(๊ตฌ์กฐ์ฒด)์ ํ์์์ ๋ํ Int๊ฐ์ ์ ์ฅํ๋๊ฑด ๊ฐ๋ฅํ์ง๋ง
์ฌ๊ธฐ์ ์ ์ฅ๋ ํ์์ ๋ฅผ, ์ด๋ป๊ฒ ์ค์ Label์ ์ ์ฅ ํ ์ง๋ ๊ณ ๋ฏผํ์ง ์์๋ ๋ฉ๋๋ค!
์ค์ ๋ผ๋ฒจ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋
label.text = "\(sch.students)"
์ ๊ฐ์ ์ฝ๋๋ Model์ ์ ์ํ์ง ์๋๋ค๋ ์๋ฏธ์ ๋๋ค!
์ด ๋ฐ์๋ Model์๋ ๋ช๊ฐ์ง ๊ธฐ๋ฅ์ด ๋ ์๋๋ฐ, ํ๋ฒ์ ์์ฝํ๋ฉด
1. ๋ฐ์ดํฐ๋ก ์ฌ์ฉํ๋ ๊ตฌ์กฐ์ฒด: ์์์ ์์๋ก GetSchool ๊ตฌ์กฐ์ฒด๋ฅผ ์๋ฏธํฉ๋๋ค.
2. ๋คํธ์ํฌ ๋ก์ง: ์๋ฒ์ ํต์ ์ ํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ก์ง์ ์๋ฏธํฉ๋๋ค.
3. Persistance ๋ก์ง: ์..ํํ ์๊ณ ์๋ Core Data๋ Realm์์ ์ฌ์ฉํ๋ ์๊ตฌ๋ฐ์ดํฐ ์ ์ฅ์ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
(persistance == CoreData or Real ์ด๊ฑด ์๋์์! )
4. ๋ฐ์ดํฐ ํ์ฑ ๋ก์ง: ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ, ์ค์ UI์ ํํํ๊ธฐ์ํ ๋ฐ์ดํฐํ์ผ๋ก json์ ํ์ฑํ๋ ๋ก์ง์ ๋งํฉ๋๋ค.
5. Manager ๊ฐ์ฒด: ์ฑ๊ธํด ๊ฐ์ฒด์ ๋น์ทํ๊ฒ, ๊ตฌ์กฐ์ฒด๋ฅผ ์ด๋์๋ ์ ๊ทผํ๊ฒ ๋ง๋ค์ด์ฃผ๋ Manager๋ฅผ ์๋ฏธํฉ๋๋ค.
6. Util, Extension, Constant: color๋ฅผ rgb๋ก ๊ณ์ฐํด์ ๋ฐ๋ก ํน์ ๋ณ์๋ก ์ ์ฅํ๊ฑฐ๋, String์ ํ์ฅํ์ฌ ํจ์๋ฅผ ๋ง๋๋ ๋ฑ๊ณผ ๊ฐ์ ์ปค์คํ ํ ๋ก์ง๋ค์ ์ ์ฅ ํ๋ ๊ฒ๋ Model์ ํฌํจ๋ฉ๋๋ค.
๋ทฐ(View)๋?
์ด๋ฆ์์๋ ์ ์ ์์ง๋ง ๋ง ๊ทธ๋๋ก ์ค์ ์ ์ ์๊ฒ ๋ณด์ฌ์ฃผ๋ ํ๋ฉด ๊ทธ ์์ฒด
์ฆ, UI๋ฅผ ์๋ฏธํฉ๋๋ค!
๊ทธ๋ ๊ธฐ ๋๋ฌธ์,
1) ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์๋ Data๋ฅผ UI๋ก ์ ์ ๋ค์๊ฒ ๋ณด์ฌ์ฃผ๊ธฐ์ํ ๋ก์ง
2) UI๋ฅผ ๊ตฌ์ฑํ๋ Layout๊ณผ ๊ฐ์ ๋ก์ง
๋ฑ์ ๊ฐ์ง๊ณ ์๊ฒ ๋ฉ๋๋ค.
View๋ ๋ค์ ๋์ฌ Controller์์ ์์ฑ์ด ๋ Data๋ฅผ ๋ฐ์์ UI๋ก ํํํ๊ฒ ๋ ํ ๋ฐ,
๊ทธ๋ ๋ค๊ณ ๋ฌด์กฐ๊ฑด View์์ ๋ฐ๋ก Data๋ฅผ ๋ง๋ค๋ฉด ์๋๋ ๊ฒ์ ์๋๋๋ค.
์๋ฅผ ๋ค๋ฉด, ์ด๋ค ๋ฒํผ์ on/offํ๋ ๋ก์ง์ด ์๋ค๋ฉด
ํน์ ์ํ๋ฅผ ์ ์ฅํ๋ ๋ณ์๋ผ๋ Data๊ฐ ํ์ํ๊ฒ ์ฃ ?
์ด๋ฌํ Data๋ View์์ ๋ง๋ค์ด๋ ๊ด์ฐฎ์ต๋๋ค!
๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด,
" ๋ทฐ์ ์ฌ์ฌ์ฉ์ฑ์ด ์ค์ํ๋ค~ "
๋ผ๋ ๋ง์ ๋ง์ด ๋ค์ด๋ณด์ จ์ ๊ฒ๋๋ค.
์์์ ๋ง ํ [์ด๋ค ๋ฒํผ]์ด ๊ณผ์ฐ ํ๋์ ํ๋ฉด์์๋ง ์ฌ์ฉ์ด ๋ ๊น์??
์ฌ๋ฌ ํ๋ฉด์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ์ด ๋๋ค๋ฉด,
๋งค๋ฒ ์ฝ๋๋ฅผ ์๋ก ๋ง๋ค์ง ๋ง๊ณ ํ์ํ ๋ ๋ง๋ค ๋ถ๋ฌ์์ ์ฌ์ฉํ๋ฉด ์ข์ง ์์๊น์??
์ด๋ ๊ฒ ์ธ๋ฐ์๋ ์ฝ๋์ ๋ญ๋น๋ฅผ ๋ง๊ธฐ ์ํด์๋ผ๋, ๋ทฐ์ ์ฌ์ฌ์ฉ์ฑ์ด ์ค์ํ๋ค๊ณ ํ๋ ๊ฒ๋๋ค.
๋น๋จ ๋ทฐ ๋ฟ๋ง์ด ์๋๋ผ ์ฌ๋ฌ ๋ฐ๋ณต์ ์ธ ๋ก์ง๋ค๋ ์ ์ ๋ฆฌํด๋๊ณ ํด๋น ํจ์๋ฅผ ๋ถ๋ฌ์ค๊ธฐ๋ง ํ๋ฉด
์ฝ๋์ ์์ด ํ๊ธฐ์ ์ผ๋ก ์ค์ด๋ค๊ณ ์ฝ๋์ ๊ฐ๋ ์ฑ๋ ๋ง์ด ์ข์์ง๊ฒ๋๋ค.
์ปจํธ๋กค๋ฌ(Controller)๋?
Controller๋ View์ Model์ ์ง๊ฒ๋ค๋ฆฌ ์ญํ ์ ํฉ๋๋ค.
์ฝ๊ฒ ๋งํด์, Model์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ค์ View์์ ๋ค๋ฃฐ ์ ์๋๋ก ๋ง๋ค์ด์ค๋ค๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
(๊ทธ๋ฆฌ๊ณ ๋์ค์ ์์ฑ ํ MVVM์ ์์์ธ ViewModel๊ณผ ๊ฑฐ์ ๋น์ทํ ์ญํ ์ ํ๋ค๊ณ ๋จผ์ ์๊ฐํฉ์๋ค!)
Controller๋ Model์์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ View์ ์ ๋ฌํ๊ณ , View๋ ํ๋ฉด์ refreshํ๊ฒ ๋ฉ๋๋ค.
์ด๋ ๊ฒ ์ ๊ธฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด์ ๋์ํ๋๋ก ํ๋ ์ญํ ์ Controller๊ฐ ํ๊ฒ ๋ฉ๋๋ค!
๋น์ฐํ ์ญ์ผ๋ก, View์์ ๋ฐ์ ์ด๋ ํ ์ก์ ์ผ๋ก ์๋ก์ด Data๋ฅผ ๋ฐ์ผ๋ฉด ์ด๋ฅผ ๋ฐํ์ผ๋ก ๋ก์ง์ ํตํด
Model์ ๋ณด๋ฅผ ์ ๋ฐ์ดํธ ํ๊ธฐ๋ ํฉ๋๋ค!
์ด์ฒ๋ผ Controller๋ ๊ฐ ๋ทฐ์ ๋ง๋ ๋ก์ง์ ๊ฐ์ง๊ณ ์์ด์ผํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฌ์ฉ์ฑ์ด View์ ๋นํด ๋ง์ด ๋ถ์กฑํฉ๋๋ค.
์, ์ด๋ ๊ฒ MVC๊ฐ ์์์ ๋ํด ์ด์ผ๊ธฐ ํด ๋ดค์ผ๋
์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก MVC ํจํด์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค!
Tranitional MVC ํจํด
์ฐ์ , iOS์์์ MVCํจํด์ Apple-MVC ์ ์ผ๋ฐ MVC 2๊ฐ์ง๋ก ๋ถ๋ฅ๊ฐ ๋ฉ๋๋ค.
์์ ์ฌ์ง์ ๋ณด๋ฉด, View๋ ์ํ๊ฐ ๊ณ ์ ์ ์ด์ง ์์ต๋๋ค!
๋ฌด์จ ์๋ฏธ์ธ๊ฐ ์ถ์ฃ ??
์ฌ์ง์์๋ Model์ ์ํ๊ฐ ๋ฐ๋ ๋ ๋ง๋ค, Controller์ ์ํด View๊ฐ ์๋กญ๊ฒ refresh๋๋ ๊ฑธ ๋ณผ ์ ์์ต๋๋ค.
์ด๋ฅผ ํตํด View์ ์ํ๊ฐ ๊ณ ์ ์ ์ด์ง ์๋ค๋ ๊ฒ์ ์ ์ ์๊ฒ ์ฃ ???
[์ด๋ค ์ดํ์์ page๊ฐ ๋ฐ๋๋ ๋ฒํผ์ ๋๋ ์ ๋, ์ ์ฒด์ ์ธ View๊ฐ ๋ฐ๋๋ฉด์ ์๋ก์ด ์ฐฝ์ผ๋ก ๋์ด๊ฐ๋ค]
์ ๊ฐ์ ๋์์ ์์๋ก ๋ค ์ ์๊ฒ ๋ค์!
์ผํ ๋ณด๋ฉด ๋ ผ๋ฆฌ์ ์ผ๋ก๋ iOS์ ์ ์ฉํ๊ธฐ์ ์ด์์ด ์์ด๋ณด์ด์ฃ ??
ํ์ง๋ง, ์ด Traditional MVC ํจํด์๋ iOS์ ๋ฐ๋ก ์ ์ฉํ๊ธฐ์๋ ๊ตฌ์กฐ์ ์ธ ๋ฌธ์ ์ ์ด ์์ต๋๋ค!
Model - View - Controller ์ด 3๊ฐ์ Entity๋ค์ด
์๋ก ์๋ก ๋๋ฌด ๋ฐ์ ํ๊ฒ ์ฐ๊ด์ด ์ง์ด์ ธ์๊ณ , ๊ฐ Entity๊ฐ ์๋ก์ ์ํ๋ฅผ ์ง์ ์ ์ผ๋ก ๊ด์ฐฐ์ด ๊ฐ๋ฅํ๋ค
"์ด๊ฒ ๋์ฒด ๋ฌด์จ๋ง์ด์ผ...?" ๋ผ๋ ์๊ฐ์ด ๋ค์ฃ ??
์ฝ๊ฒ ๋งํ์๋ฉด, ์๋ก๊ฐ ๋ ๋ฆฝ์ ์ด์ง ๋ชปํ๋ค๋ ๋ป ์ ๋๋ค!
์ฐ๋ฆฌ๊ฐ ์ค์ ๊ฐ๋ฐ์ ์งํํ๋ค ๋ณด๋ฉด, ํน์ ํจ์๋ง ์ํ ํด ๋ณด๋ ๊ฒฝ์ฐ๊ฐ ์๊ณ ํน์ ํน์ View๋ง Unit๋จ์๋ก
ํ ์คํธ๋ฅผ ํด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์์ ํฉ๋๋ค.
ํ์ง๋ง, ๋ง์ฝ ์์ ๊ตฌ์กฐ์ฒ๋ผ ๊ฐ Entity๋ค์ด ์๋ก ๋ฐ์ ํ ๊ด๊ณ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉด
์ ๋ง ๋ ๋ฆฝ์ ์ธ ๋จ์ํ ์คํธ๊ฐ ๊ฐ๋ฅํ ๊น์??
์๋๋๋ค. ๊ฒฐ๊ตญ, ํ๋๋ฅผ ๊ฑด๋๋ฆฌ๋ฉด 3๊ฐ๋ฅผ ๋ชจ๋ ๊ฑด๋๋ฆฌ๊ฒ ๋๋ ๋์ฐธ์ฌ(?)๊ฐ ๋ฐ์ํ๋ ๊ฒ์ด์ฃ !
apple์ด ์๋ํ๋ ์ต์ iOS ๊ฐ๋ฐ๋ฐฉํฅ๊ณผ๋ ๋ง์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์, ๋ณํ๋ ๋์์ธ ํจํด์ด ๋ฑ์ฅํ๊ฒ ๋ฉ๋๋ค....
Cocoa MVC ํจํด
๊ธฐ์กด์ MVC์์ ๊ฐ์ ๋ Cocoa MVCํจํด์ ๋๋ค.
๊ทธ๋ฆผ์์ ๋ณผ ์ ์๋ฏ์ด, Controller๋ View์ Model์ฌ์ด์์ ์ค์ฌ์ ์ญํ ์ ํฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์๋ ์ค์ฌ์์ ์๋ฏธ๋ ๋ฌด์์ธ๊ฐ์??
๋ฐ๋ก, ์๋ก๊ฐ ๋ง๋์ง ๋ชปํ์ง๋ง ์๋ก์ ์๊ฒฌ์ ์กฐ์จํด์ฃผ๋ ์ญํ
๋ฐ๋ก ์ด๊ฒ์ด ์ด Cocoa MVC ํจํด์ ์ฃผ์ํ ํน์ง์ ๋๋ค.
Traditional MVC ์์๋ View์ Model์ด ์๋ก ์ง์ ์ ์ผ๋ก ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์์ง๋ง,
Cocoa MVC์์๋ Controller๋ผ๋ ์ค์ฌ์๋ฅผ ํตํด ๊ฐ์ ์ ์ผ๋ก ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์, View์ Model์ ์๋ก์ ์ํ๋ฅผ ๋ชจ๋ฅด๋ ์๋ก์๊ฒ ๋ ๋ฆฝ์ ์ธ ์กด์ฌ๊ฐ ๋ฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์์์ Controller๋ ์ฌ์ฌ์ฉ์ฑ์ด ๋ฎ๋ค ๋ผ๊ณ ํ๋๊ฑฐ ๊ธฐ์ต ํ์๋์??
๊ทธ๋ ๋ค๋ฉด ์ด์ ์ฌ์ฌ์ฉ์ฑ์ด ๋ฎ์๊ฑฐ, Model์ ์๋ ๊น๋ค๋ก์ด ๋น์ง๋์ค ๋ก์ง์
Controller์ ๋ค ๋ฃ์ด๋ฒ๋ฆฌ์~~
์ด๊ฒ์ด ์ด Cocoa MVC์ ์ค์ํ ํน์ง์ ๋๋ค.
์, ์ผํ๋ณด๋ฉด ์๋นํ ์ง๊ด์ ์ด๊ณ ์ข์ ๊ฒ ๊ฐ์ฃ ?
ํ์ง๋ง apple์ ๋ถ๋ง์ด ๋ง์์ด์,,,,,,
์ฌ๋๋ค์ ํํ๋ค,
MVC ํจํด์ Massive ViewController๋ฅผ ๊ฐ์ง๊ณ ์๋ ํจํด์ด์ผ~
๋ผ๊ณ ๋ง ํ๊ณ ๋ ํฉ๋๋ค.
๊ฒ๋ค๊ฐ, ViewController๋ฅผ ์ฐธ์กฐ(์ด๋ฏธ ๋ง๋ค์ด์ง VC๋ฅผ ๊ฐ์ ธ๋ค๊ฐ ์ฌ์ฉํ๋ ๊ฒ)์ ์ด๋ฏธ iOS ๊ฐ๋ฐ์์๊ฒ๋
์ค์ํ Topic์ด์์ต๋๋ค.
๊ทธ๋ฌ๋ค๋ณด๋ ๋น์ฐํ, Apple์ ๋ ๋์ ๊ฐ์ ์ฑ ์ ๊ฐ์ ธ์๊ฒ ์ฃ ???
Apple's MVC ํจํด
์ฌ์ค ์์ ์ฌ์ง์ Realistic Cocoa MVC ํจํด์ธ๋ฐ ํํ Apple's MVCํจํด์ด๋ผ๊ณ ๋ถ๋ฆฌ์ฐ๊ณ ์์ต๋๋ค.
์์์ ๋ง ํ๋ฏ์ด, Cocoa MVCํจํด์์ ViewContoller๋ค์ด Massiveํ ๊ฒ์ ์ด์ฉ ์ ์์ด ๋ฐ์๋ค์ฌ์ก์ต๋๋ค.
๊ทธ ์ด์ ์ค ํ๋๊ฐ ์ด๋ฐ ViewController๋ค์ View๋ค์ life cycle์ ์๋นํ ๋ง์ด ๊ด์ฌํ๊ณ ์๊ธฐ ๋๋ฌธ์ด๊ฑฐ๋ ์...
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ MVCํจํด์ ๋จ์ํ ์คํธ๋ฅผ ํ๊ธฐ์๋ ์ฉ ์ ํฉํ์ง ์์ ํจํด์ด๋ผ๊ณ ํ ์ ์๊ฒ ๋ค์...
ํ์ง๋ง ์๋ฌด๋๋, ๋ค์ํ ๋ก์ง์ ๊ฐ ๊ฐ ๋ถํ ํ์ง ์๊ณ
๋ญํฑ์ด๋ก(?) ๋ชจ์๋๋ค ๋ณด๋, ๋น ๋ฅด๊ฒ ๊ฐ๋ฐ์ ์งํํ ์ ์๋ค๋ ์ฅ์ ๋ ์๋ต๋๋ค ~!
์ฌ์ค ์ด MVCํจํด์ด ์ด๋ฐ Massiveํจ๋ ์์๋ค๋ฉด, ์ ๊ฐ ๊ณต๋ถํ๋ MVVM์ด๋ ์ฌํ ๋ค๋ฅธ ๋์์ธ ํจํด์ด
๋์ค์ง๋ ์์๊ฒ ์ฃ ,,,?
์๋ฌดํผ!
์ด๋ ๊ฒ ๊ฐ๋จํ๊ฒ(?) MVC๋ชจ๋ธ์ ๋ํด ์์๋ณด์๋๋ฐ, ์ดํด๊ฐ ์ ๋์ จ์ผ๋ฉด ์ข๊ฒ ๋ค์,,,
์์ง ํ์์ด๋ผ ๊ณต๋ถํ๋ฉด์ ์์ฑํ ๋ถ์กฑํจ์ด ๋ง์ ๊ธ์ด์ง๋ง,
๋ถ์กฑํ๊ฑฐ๋ ์๋ชป๋ ๋ถ๋ถ์ ์ง์ ํด์ฃผ์๋ฉด ๊ฐ์ฌํ ๋ฐฐ์ฐ๋๋ก ํ๊ฒ ์ต๋๋ค!
์ด์์ผ๋ก ๊ธ์ ๋ง์น๊ณ , ๋ค์์ MVVM์ ๋ํ ๊ธ์ ์จ ๋ณด๋๋ก ํ ๊ฒ์!
์ฐธ๊ณ ์๋ฃ :
https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52