์ํคํ ์ฒ ํจํด๋ค์ ์ฃผ๊ด์ ๋๋์ด ์๋ ์ ์๋ค๊ณผ ๋ ผ๋ฌธ๋ค์ ๊ธฐ๋ฐํด ํ์ตํฉ๋๋ค. iOS์ UIKit ํ๊ฒฝ์์ MVC, MVP, MVVM์ ์ค๋ช ํฉ๋๋ค.
GUI ์ํคํ ์ฒ ํจํด๋ค์ ์ญ์ฌ์ ํน์ง
iOS ํ๊ฒฝ์์์ GUI ์ํคํ ์ฒ ํจํด
iOS ๊ฐ๋ฐ์๋ฅผ ๊ฟ๊พผ๋ค๋ฉด ํ์!
GUI ์ํคํ
์ฒ ํจํด โจ
iOS ๊ฐ๋ฐ์ ์ฑ์ฉ๊ณต๊ณ ๋ฅผ ๋ณด๋ฉด ๋ฐ๋์ ๋น ์ง์ง ์๋ ํ์์๊ฑด์ด ์์ต๋๋ค. ๋ฐ๋ก '๋ค์ํ ์ํคํ ์ฒ ํจํด์ ๋ํ ์ดํด๋ ๊ฒฝํ'์ ๋๋ค. ํ์ง๋ง ์ํคํ ์ฒ ํจํด์ ๋ํด ํ๊ตญ์ด๋ก ์์ธํ๊ฒ ์ค๋ช ํด์ฃผ๋ ์ฑ ์ด๋ ๊ธ์ ์ฐพ์๋ณผ ์ ์์ต๋๋ค. ์ ๋ ๋น์ทํ ์ด๋ ค์์ ๊ฒช์ผ๋ฉฐ ์ง์ ์์ด๋ ์ผ๋ณธ์ด๋ก ๋ ์ ์๋ค๊ณผ ๋ ผ๋ฌธ๋ค์ ์ฝ๊ณ ๋์์ผ ํฐ ํ๋ฆ์ ์ดํดํ ์ ์์์ต๋๋ค.
๋ณธ ๊ฐ์์์๋ ์ํคํ ์ฒ ํจํด๋ค์ ์ญ์ฌ์ ์ฃผ์ ๊ฐ๋ ์ ๋ค๋ฃน๋๋ค. GUI ์ํคํ ์ฒ์ธ MVC, MVP, MVVM ์ํคํ ์ฒ๋ฅผ ์ค์ ์ ์ผ๋ก ๋ค๋ฃน๋๋ค. ์ํคํ ์ฒ ํจํด์ ์ ํ์ด ์์ฃผ ๋ฐ๋๊ณ , ๋ชป ๋ฐ๋ผ๊ฐ๊น ๋ด ๋ถ์๊ฐ์ด ๋๋ ์ฃผ์ ์ ๋๋ค. ๊ทธ๋ฌํ ๋ถ์๊ฐ์ ํด์ํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๊ธฐ์ด๋ฅผ ํํํ ์ธ์ฐ๋ ๊ฒ์ ๋๋ค. ์ ๊ฐ์๊ฐ ๊ทธ ์ด์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
iOS๋ ๋ค๋ฅธ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋นํด ์๋นํ ๋ค์ํ ์ํคํ ์ฒ ํจํด๋ค์ด ์ฌ์ฉ๋๊ณ ์์ต๋๋ค. ํ์ง๋ง ๋ค์ํ ์ํคํ ์ฒ ํจํด์ ๊ดํตํ๋ ํค์๋๋ ์๊ฐ๋ณด๋ค ๋จ์ํ๋ฉฐ ๋๋ถ๋ถ์ ๊ธฐ์กด ์ํคํ ์ฒ์ ์์ ๋ณํ์ ๋ถ๊ณผํฉ๋๋ค. ์ด๋ค ์ข ๋ฅ์ ํจํด์ ์ ํํ ์ง ํท๊ฐ๋ฆด์๋ก ์ ํ์ ํฉ์ธ๋ฆฌ์ง ์๊ณ ๋ณธ์ง์ ์ง์คํ์ฌ ํ์ตํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
๐ข ์๊ฐ ์ ํ์ธํด์ฃผ์ธ์!
์ํคํ์ฒ ํจํด์
ํ์ตํ๊ณ ์ถ์ ๋ถ
iOS ๊ฐ๋ฐ์ ์ทจ์
์
์ค๋นํ๋ ์ทจ์ค์
iOS ํ๋ก์ ํธ๊ฐ ์ฒ์์ธ
๊ฒฝ๋ ฅ ๊ฐ๋ฐ์
iOS ํ๋ก์ ํธ ๊ฒฝํ์
์์ง๋ง ์ํคํ
์ฒ ํจํด
์ง์์ด ๋ถ์กฑํ ๋ถ
ํน์ ์ํคํ ์ฒ ํจํด์ ํด๋น ์ํคํ ์ฒ ํจํด์ด ํ์ํ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ๊ฑฐํ ์ถ์์ ํํ๋ก๋ ์ดํดํ ์ ์์ต๋๋ค. ์ด ๊ฐ์์์๋ ์ฌ๋ฌ ์ ์์ ๋ ผ๋ฌธ๋ค์ ๋ด์ฉ์ ํตํด ๊ฐ๊ฐ์ ์ํคํ ์ฒ ํจํด๋ค์ด ํด๊ฒฐํ๋ ค ํ๋ ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง ํ์ ํ๊ณ iOS์ ์ ์ฉ์ด ๊ฐ๋ฅํ์ง ๋ ผ์ํฉ๋๋ค.
์ด ๊ฐ์๋ ์ปค๋ฎค๋ํฐ์ ์ ํ๊ณผ๋ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ๋๋ค. MVC๋ฅผ Massive Controller๋ผ๊ณ ์ผ์ถํ๊ณ ๋ค๋ฅธ ์ํคํ ์ฒ๋ฅผ MVC์ ๋นํด ์ง๋ณดํ ์ํคํ ์ฒ๋ก ๋ฐ๋ผ๋ณด๋ ๊ด์ ์ ์ง์ํฉ๋๋ค. ๋งํด ํ์ธ๋ฌ์ ๋ง์ฒ๋ผ ์ํคํ ์ฒ ํจํด์ '๋ฌด์ธ๊ฐ ์ค์ํ ์ด์ผ๊ธฐ๋ฅผ ํ๊ณ ์๋ค๋ ์ธ์์ ์ฃผ๊ธฐ ์ํด ํ์ฉํ๋ ค๋ ๋ชฉ์ '์ผ๋ก ์ฌ์ฉํ๊ธธ ์ํ๋ค๋ฉด ์ด ๊ฐ์์๋ ๋ง์ง ์์ต๋๋ค.
์ํคํ ์ฒ ํจํด์ ๋ํด ํ๊ตญ์ด๋ก ์์ธํ๊ฒ ์ค๋ช ํด์ฃผ๋ ์ฑ ์ด๋ ๊ธ์ ์ฐพ์๋ณผ ์ ์์ต๋๋ค. ์ฝํผ๋ฐ์ค ๋ฐํ ์๋ฃ๋ค๋ ์๊ฐ์ ์ ์ฝ์ด๋ ์ปค๋ฎค๋ํฐ ํ๋์ ํน์ฑ์ ์์ง์ ๋ด์ฉ์ ๊ธฐ๋ํ๊ธฐ๋ ํ๋ญ๋๋ค. ์ ๊ฐ ๊ฒฝํํ ์ด๋ ค์์ ๋ฐํ์ผ๋ก GUI ์ํคํ ์ฒ ํจํด์ ์ญ์ฌ์ ์ฃผ์ ๊ฐ๋ ์ ํ์ตํ ์ ์๋๋ก ๊ฐ์๋ฅผ ๊ตฌ์ฑํ์ต๋๋ค.
์ํคํ ์ฒ์ ํจํด ๊ทธ๋ฆฌ๊ณ ์ํคํ ์ฒ ํจํด์ด ๋ฌด์์ธ์ง ๊ฐ๊ฐ ์ ์ํ๋ฉด์ ํ์ํ ์ฌ๋ฌ ๊ฐ๋ ๋ค์ ๋ฐฐ์๋๋ค.
์ฃผ์ ์ฃผ์
GUI ์ํคํ
์ฒ์ ์์กฐ์ธ MVC(Model-View-Controller)๋ฅผ ํ์ตํฉ๋๋ค.
์ฃผ์ ์ฃผ์
๊ฐ๋ฐํ๊ฒฝ์ ๋ณํ์ ๋ฐ๋ผ ๊ธฐ์กด์ MVC๋ฅผ ๋ณํ์ํจ MVP(Model-View-Presenter)๋ฅผ ํ์ตํฉ๋๋ค
์ฃผ์ ์ฃผ์
iOS ๊ฐ๋ฐ์ ์ฑ์ฉ๊ณต๊ณ ์์ ์ฌ๋งํ๋ฉด ๋น ์ง์ง ์๋ ์ํคํ ์ฒ ํจํด์ธ MVVM(Model-View-ViewModel)์ ํ์ตํฉ๋๋ค.
์ฃผ์ ์ฃผ์
์๋ ๋ด์ฉ๋ค์ ์ดํดํ ์ ์๊ฒ ๋ฉ๋๋ค
Q. Swift๋ iOS ๊ธฐ์ด์ ๋ํ ๋ด์ฉ๋ค๋ ์ค๋ช ํ๋์?
์ค๋ช ํ์ง ์์ต๋๋ค. ๋ค๋ฅธ ์ฑ ์ด๋ ๊ฐ์๋ก ๊ธฐ์ด๋ฅผ ํ์ตํ์ ํ ์ด ๊ฐ์๋ฅผ ์๊ฐํด์ฃผ์ธ์.
Q. ๊ฐ์์๋ ์ด๋ค ์ํคํ ์ฒ ํจํด์ ์ ํธํ๋์?
ํน๋ณํ ์ ํธํ๋ ์ํคํ ์ฒ ํจํด์ ์์ต๋๋ค. ๋ ํนํ ์ ์ด ์๋ค๋ฉด ์ปค๋ฎค๋ํฐ ๋ฑ์ ์ ํ๊ณผ ๋ฌ๋ฆฌ MVC๋ฅผ ๋์๊ฒ ์๊ฐํ์ง ์์ต๋๋ค. ์คํ๋ ค MVVM์ฒ๋ผ ์ ํํ๊ณ ์์ง๋ง ๊ธฐ์กด์ ๋งฅ๋ฝ๊ณผ ๋ค๋ฅด๊ฒ ๋ณ์ง๋ ๊ตฌํ ๋ฐฉ๋ฒ๋ค์ ๋นํ์ ์ธ ์๊ฒฌ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. Flux(Redux)๋ MVC์ ๋นํด ๊ฐ์ ์ ์ด ์์ผ๋ฏ๋ก ์์ธํ ๋ค๋ฃจ์ง ์์ต๋๋ค(์ ๊ฐ์ ์ ์ด ์๋ค๊ณ ์๊ฐํ๋์ง ๊ฐ์์์ ๋ค๋ฃน๋๋ค).
Q. ๋จผ์ ๊ณต๋ถํ๊ณ ์ค๋ฉด ๋์์ด ๋ ์๋ฃ๊ฐ ์์๊น์?
๋งํด ํ์ธ๋ฌ์ ใ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์ํคํ ์ฒ ํจํดใ์ ์ฝ๊ณ ์ค์๋ฉด ํ์ธต ์ดํดํ๊ธฐ ์์ํ ๊ฒ์ด๋ผ ์๊ฐํฉ๋๋ค.
ํ์ต ๋์์
๋๊ตฌ์ผ๊น์?
MVC, MVP, MVVM์ ๊ฐ๋ ์ ์ ํํ๊ฒ ๋ชจ๋ฅด์๋ ๋ถ
iOS ๊ฐ๋ฐ์ ์ทจ์ ์ค๋น์
๋ชจ๋ฐ์ผ ํ ํ๋ก์ ํธ ๋ฆฌ๋
์ ์ ์ง์,
ํ์ํ ๊น์?
์ด๋ฆฐ ๋ง์
Swift์ iOS์ UIKit ํ๊ฒฝ์ ๋ํ ๊ธฐ์ด์ ์ธ ์ดํด
์ ์ฒด
35๊ฐ โ (2์๊ฐ 14๋ถ)
๊ณต๊ฐํ์ง ์๋ ๊ฐ์๋ก ์๊ฐ์ด ์ ํ๋ฉ๋๋ค.