ํ๋ก๊ทธ๋๋จธ
๋ฌธ์: eonsu.work@gmail.com
Posts
Q&A
MVVM in iOS - ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ, ์๋๋ฐ์ธ๋ฉ๊ณผ ์๋๋ฐ์ธ๋ฉ์์ ์ง๋ฌธ์ด์์ต๋๋ค
iOS ๊ฐ๋ฐ์๋ค์ด Combine์ ๋ทฐ์ ๋ทฐ๋ชจ๋ธ ๊ฐ์ ๋ฐ์ดํฐ๋ฐ์ธ๋ฉ ์ฉ๋๋ก๋ ์ฌ์ฉํ๋ ๊ฒ์ด Combine์ด ๋ฐ์ดํฐ๋ฐ์ธ๋ฉ์ ์ง์ํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ๊ฒ์์ ์๋ฏธํ์ง๋ ์์ต๋๋ค. RxSwift์ ๋ง์ฐฌ๊ฐ์ง๋ก Combine์ ๋ณด๋ค ๋ค์ํ ์ฉ๋๋ก ์ฌ์ฉํ๋ API์ ๋๋ค.๊ณต์๋ฌธ์์๋ Combine์ ๋ค์๊ณผ ๊ฐ์ด ํ ์ค๋ก ์๊ฐํ๊ณ ์์ต๋๋ค.Customize handling of asynchronous events by combining event-processing operators.Combine์ ๊ตณ์ด ํน์ ํจ๋ฌ๋ค์์ด๋ ์ํคํ ์ฒ์ ์ฐ๊ด์ง์ด์ ์ค๋ช ํด์ผ ํ๋ค๋ฉด MVVM ๋ณด๋ค๋ ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ๊ณผ ์ฐ๊ด์ง์ด์ ์ค๋ช ํ๋ ๊ฒ์ด ํ๋นํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๊ฐ ๋ชจ๋ฅด๋ ๋ด์ฉ์ด ์์์๋ ์๊ฒ ์ง๋ง ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ๊ณผ MVVM์ ์ง์ ์ ์ธ ๊ด๊ณ๋ฅผ ์ฐพ๊ธฐ ์ด๋ ต์ต๋๋ค.
- Likes
- 0
- Comments
- 1
- Viewcount
- 320
Q&A
MVC์ ๋ณธ์ง์ ๋ํ ์ง๋ฌธ
์๋ ํ์ธ์, ์ง์๋.MVC์ ๋ณธ์ง์ ์ดํดํ๋ ๊ฒ์ด ๋์์ด ๋๋ ์ด์ ๋ ์ ์ ์นํ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๊ธฐ ๋๋ฌธ์ด๋ผ๊ธฐ ๋ณด๋ค๋ ๊ฐ์ MVC๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง๊ณ ์๋ค๊ณ ํ๋๋ผ๋, ์ ๋ ฅ์ ๋ฐ๋ ๊ฒ์ด ๋ทฐ์ธ ํ๊ฒฝ๋ ์๋๊ฐ ํ๋ฉด ์ปจํธ๋กค๋ฌ์ธ ํ๊ฒฝ๋ ์๊ณ , ์ปจํธ๋กค๋ฌ๊ฐ ์ค์ฌ์ ์ญํ ์ ํ๋ ํ๊ฒฝ๋ ์๊ณ , ๋ทฐ๋ฅผ ์ํ ๋ณ๋์ ๋ชจ๋ธ์ด ์กด์ฌํ๊ฑฐ๋ ์ ๋ต ํจํด, ์ปดํฌ์งํธ ํจํด, ์ปค๋งจ๋ ํจํด, ์ต์ ๋ฒ ํจํด ๋ฑ ๋ค์ํ ๋์์ธ ํจํด์ ์ฌ์ฉํ๋ ๋ฑ ์๋ง์ ํํ์ MVC๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ผ ์ด๋ ๊ฒ ๋ค์ํ ํํ์ MVC๊ฐ ์กด์ฌํ๋ค๋ฉด ์์ฐ์ค๋ฝ๊ฒ '๋๋์ฒด MVC๋ผ๋๊ฒ ๋ฌด์์ด๋. ์ด๊ฒ์ด MVC๋ค๋ผ๊ณ ํ๋ง๋๋ก ์ ์๋ด๋ฆด ์ ์๋ ๊ฒ์ด ์๊ธฐ๋ ํ ๊ฒ์ด๋'๋ผ๋ ๋ฌผ์์ด ์๊ฒจ๋ ์ ์๊ณ ์ฌ๊ธฐ์ ๋ํ ๋ต์ด ๋ ์ ์๋ ๊ฒ์ด ๋ชจ๋ธ ๊ณ์ธต์ ๋ฐ๋ผ๋ณด๋ ์๊ฐ์ด ๋ ์ ์๋ ๊ฒ์ ๋๋ค. ๊ณผ๊ฑฐ์๋ ๋ชจ๋ธ์ด ๋ทฐ๋ ์ปจํธ๋กค๋ฌ ๊ฐ์ ํ๋ ์ ํ ์ด์ ๊ณ์ธต๊ณผ ๋ถ๋ฆฌ๋์ง ์์ ๊ฐ๋ฐํ๊ฒฝ๋ ์์๋๋ฐ, ๊ทธ๋ฐ ๊ฐ๋ฐ๋ฐฉ์์ ์๋ชป๋ ๋ถ๋ฆฌ๋ผ๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ธ์ ํ๋ ์ ํ ์ด์ ๊ณ์ธต์ผ๋ก๋ถํฐ ๋ถ๋ฆฌ์ํค๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐํ๊ณ , ๊ฐ๋ฐํ๊ฒฝ๋ง๋ค ์ํฉ์ ๋ฐ๋ฅธ ์ง์ฝ์ ์ธ ์ฐจ์ด๋ ์์ ์ ์์ง๋ง ์ด๋ฐ ์์น์ ์งํจ๋ค๋ฉด MVC๋ผ๊ณ ํ ์ ์๋ค๋ผ๋ ๊ฒ์ ๊ฐ์กฐํ๋ ์๋ฏธ๋ก ๋ฐ์๋ค์ด์๋ฉด ๋๊ฒ ์ต๋๋ค.
- Likes
- 0
- Comments
- 1
- Viewcount
- 398
Q&A
MVVM ํ ํ๋ฆฟ2 ๊ด๋ จ
iOS์์ ์ผ๋ฐ์ ์ผ๋ก ํ์๋ทฐ์์ ์์๋ทฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋๋ Delegate ํจํด์ ์ฌ์ฉํฉ๋๋ค.PostsViewController์ PostTableViewCellDelegate ํ๋กํ ์ฝ์ ๋ง๋ค์ด ๋ทฐ ๊ฐ์ ์ฒ๋ฆฌํ ์์ ์ ํจ์๋ก ๋ช ์ํ๊ณ (ex. did~ ์ฒ๋ฆฌํ ์์ ์ ์ ๋ํ๋ด๋ ํจ์๋ช ์ผ๋ก ์ง์ผ์๋ฉด ๋ฉ๋๋ค)PostsViewController๊ฐ ์ด ํ๋กํ ์ฝ์ ๊ตฌํํ๋๋ก ๋ง๋ค๊ณ PostTableViewCell์ delegate๋ผ๋ ํ๋กํผํฐ๋ฅผ PostTableViewCellDelegate ํ์ ์ผ๋ก ๋ง๋ ๋คPostsViewController์์ PostTableViewCell์ ์์ฑํ ๋ PostTableViewCell์ด ๊ฐ์ง delegate ํ๋กํผํฐ์ ์์ ์ ์ฐธ์กฐ(self)๋ฅผ ๋๊ฒจ์ฃผ๊ณ PostTableViewCell์์ ์ด๋ค ์ ๋ ฅ์ด ๋ฐ์ํ์ ๋ delegate์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ๋๊ธฐํํ๋ฉด ๋์ง ์์๊น ํฉ๋๋ค.์ด๋ ๊ฒํ๋ฉด ํ์๋ทฐ์ธ PostTableViewCell์ด ์์๋ทฐ์ธ PostsViewController๋ฅผ ์ง์ ์ฐธ์กฐํ๊ฑฐ๋ ์์๋ทฐ์ ๋ทฐ๋ชจ๋ธ์ธ PostsViewModel์ ์์ง ์์๋ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์กด๊ด๊ณ๋ฅผ ์ฝ๊ฒ ๊ด๋ฆฌํ๋ ค๋ฉด ํ๋์ ๋ทฐ๋ชจ๋ธ์ ํ๋์ ๋ทฐ ์ปจํธ๋กค๋ฌ์์๋ง ์์กดํ๋๋ก ๋ง๋๋ ๊ฒ์ด ์ข์ต๋๋ค.
- Likes
- 0
- Comments
- 1
- Viewcount
- 490
Q&A
๊ฐ์์๋ฃ๊ฐ์๊ฒ ๋ฐ๋ก ์๋์ ??
์๋ ํ์ธ์ ์ด์ค๋ณต๋. ๋ณ๋๋ก ์ ๊ณต๋๋ ๊ฐ์ ์๋ฃ๋ ์์ต๋๋ค. ์ถ๊ฐ๋ก ๊ถ๊ธํ์ ์ ์์ผ์๋ฉด ํธํ๊ฒ ์ง๋ฌธํด์ฃผ์ธ์.๊ฐ์ฌํฉ๋๋ค.
- Likes
- 0
- Comments
- 1
- Viewcount
- 498
Q&A
์ ๊ฐ ์ดํดํ๊ฒ ๋ง๋์ง ๊ถ๊ธํฉ๋๋ค.
์๋ ํ์ธ์.์ํคํ ์ฒ ํจํด์ ๊ณต๋ถํ๋ค๋ณด๋ฉด ํ๋ฒ์ฏค์ 'MVC๋ MVP๋ MVVM์ด๋ ๊ฒฐ๊ตญ ๋ญ๊ฐ ๋ค๋ฅธ๊ฑฐ์ง?'๋ผ๋ ์๋ฌธ์ ๋น ์ง๋๊ฒ ๋น์ฐํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ตญ๋ด์์ ์ ๋ช ํ ํ์ฌ(ex. ๋ค์นด๋ผ์ฟ ๋ฐฐ) ์ถ์ ๊ฐ๋ฐ์๋ค๋ ๋ฐํํ๋ ๋ด์ฉ๋ค์ ๋ณด๋ฉด Passive View๋ฅผ ๊ตฌํํด๋๊ณ MVC๋ MVVM์ด๋ผ๊ณ ๋งํ๋ ๊ฒฝ์ฐ๋ ๋ง์์ ๋ค๋ฅธ ์๋ฃ๋ค๊น์ง ๋ณด์ จ๋ค๋ฉด ๋ ํผ๋์ค๋ฌ์ ์ ๊ฒ ๊ฐ์ต๋๋ค.์ ๊ฐ ๊ฐ์์์ ์ค๋ช ํ ๋ฐ์ ๊ฐ์ด GUI ์ํคํ ์ฒ๋ค์ ๊ทผ๊ฐ์๋ PDS๋ผ๋ ์ฌ์์ด ์๊ณ , ์ด ์ฌ์์ ๋ฐ๋ผ P๋ฅผ View๋ก D๋ฅผ Model๋ก ํ์ํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ๊น์ง๋ ๋๋ถ๋ถ์ด ๋ฌธ์ ์์ด ์ดํดํ๋, ํผ๋์ ์์ธ์ด ๋๋ ๊ฒ์ M๊ณผ V์ ๋ค์ ๋ถ๋ C(Controller), P(Presenter), VM(ViewModel)์ ๋๋ค.์ ๊ฐ ๊ฐ์ ๋ด์์ ์ง์์ ์ผ๋ก ๊ฐ๋ฐํ๊ฒฝ์ ๋ฐ๋ฅธ ์ฐจ์ด๋ฅผ ๊ฐ์กฐํ๋ฉฐ ๋ค์ํ ๊ฐ๋ฐํ๊ฒฝ์์ ์กด์ฌํ๋ ํจํด๋ค์ ์ค๋ช ํ ๋ด์ฉ์ด ๊ธฐ์ต๋์ค์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๋ ๊ฒ ํ๋๊ฒ์ C, P, VM ๊ฐ์ ์ฐจ์ด๋ฅผ ์ดํดํ๋ ค๋ฉด ๊ฒฐ๊ตญ ๊ฐ๋ฐํ๊ฒฝ์ ๋ฐ๋ฅธ ์ฐจ์ด๋ฅผ ์ดํดํ์ง ์๊ณ ์๋ ๊ทธ ์ฐจ์ด๋ฅผ ๊ตฌ๋ณํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๊ธฐ์ Controller๊ฐ ๋ฑ์ฅํ๋ Smalltalk ํ๊ฒฝ์์๋ Controller๊ฐ ์ ์ ์ ์ ๋ ฅ์ฅ์น(๋ง์ฐ์ค, ํค๋ณด๋ ๋ฑ)๋ก๋ถํฐ ๋ค์ด์ค๋ ์ ๋ ฅ์ ํด์ํด์ฃผ๋ Input Controller์์ต๋๋ค. ํ์ง๋ง Presenter๊ฐ ๋ฑ์ฅํ Taligent๋ Dolphin ๋ฑ์ ๊ฐ๋ฐํ๊ฒฝ์์๋ Smalltalk์ ๊ฐ์ IC๋ฅผ ๋์ ํ ๊ตฌํํ ์ ์์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ํํ์ ์ํคํ ์ฒ๋ฅผ ๊ณ ์ํ ์ ๋ฐ์ ์์๊ณ , ๊ทธ ๊ฒฐ๊ณผ ์๋ก์ด ๋ช ์นญ์ ์ํคํ ์ฒ๊ฐ ๋ฑ์ฅํ ๊ฒ์ ๋๋ค. ViewModel์ WPF๋ฅผ ์ค๊ณํ ์ํคํ ํธ๋ค์ ์๋์ ๋ง๊ฒ ๋์์ด๋๋ค์ด ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋ View ๊ฐ๋ฐํ๊ฒฝ์ ๋ง๋ค๊ณ , ์ด๊ฒ์ ์ด๋ป๊ฒ ํ๋ก๊ทธ๋๋จธ๋ค์ด ์์ ํ ๊ฒฐ๊ณผ๋ฌผ๋ค๊ณผ ์ฐ๊ฒฐ์ํฌ ์ ์์๊น๋ผ๋ ๋ฌธ์ ์์์์ ํ์ํ ๊ฒ์ ๋๋ค. ๊ทธ๋ ๋ค๊ณ ๊ผญ ์ด๋ฆ์ ๋ฐ๊ฟ์ผ ํ๋์ง, ์๋๋ฉด ๋ค๋ฅธ ๋ฌธ์ ์์์์ ํ์ํ๋งํผ ์ด๋ฆ์ด ๋ค๋ฅธ ๊ฒ์ด ๋น์ฐํ๋ค๋ผ๊ณ ๋งํด์ผ ํ ์ง๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋์์ด๋์ ํ๋ก๊ทธ๋๋จธ๊ฐ ํ์ ํด์ผ ํ๋ค๋ฉด ๋ทฐ๋ฅผ ์ต๋ํ ํ๋ก๊ทธ๋๋ฐ ์ง์์ด ์์ด๋ ๊ฐ๋ฐํ ์ ์๋ ํ๊ฒฝ์ผ๋ก ๋ง๋ค์ด์ค์ผ ํ๋ฉฐ(ex. ๋งํฌ์ ๋ญ๊ท์ง), ๋์์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ ํด์ผ ํ๋ ๋ณ๋์ ๊ณต๊ฐ์ ๋ง๋ค์ด์ค์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ์๋ก ๋ถ๋ฆฌ๋ ๊ฐ๋ฐํ๊ฒฝ์ ์ฐ๊ฒฐ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด์ฃผ๋ ๊ฒ์ด ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ(Data Binding)์ ๋๋ค. MVVM์ ๋๋๋ฌ์ง๋ ํน์ง์ด ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ธ๋งํผ ์ด ์ ์ ๊ผญ ๊ธฐ์ตํด์ฃผ์ จ์ผ๋ฉด ํฉ๋๋ค.๋ง์ํ์ ๊ฒ์ฒ๋ผ ํด๊ฒฐํด์ผ ํ๋ ๋ฌธ์ ๊ฐ ๋ง์์ง๋ฉด ๋ณต์ก์ฑ์ ์ฌ๋ผ๊ฐ ์๋ฐ์ ์์ต๋๋ค. ์ด๊ฒ์ ํน์ ์ํคํ ์ฒ ์ ์ ๋ง์ผ๋ก๋ ๊ทผ๋ณธ์ ์ผ๋ก ํด์ํ ์ ์๋ ๋ฌธ์ ์ ๋๋ค. ๋ค๋ง ์ํคํ ์ฒ ํจํด์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ์ ํ ๊ท์น์ ๋ถ์ฌํจ์ผ๋ก์จ ๊ธฐ์กด ์ฝ๋๋ฅผ ํ์ ํ๊ฑฐ๋ ์๋ก์ด ์ฝ๋๋ฅผ ์์ฑํ ๋, ์ด๋ค ๋ฐฉ์์ผ๋ก ๋์ด ์๋์ง ๊ทธ๋ฆฌ๊ณ ์ด๋ป๊ฒ ์์ฑํด์ผ ํ๋์ง ๋ถ๋ด์ ๋์ด์ฃผ๋ ์ ๋์ ์ญํ ์ ํ ์ ์์ต๋๋ค.์ง๋ฌธ์ ์์ฑํ์ ํํ๋ง ๋ณด๊ณ ๋ MVVM์ธ์ง ์๋์ง ํ์ ์ด ์ด๋ ต์ต๋๋ค. ์ผ๋จ ์ ์ญ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ์ฉ๋๋ก Store๋ฅผ ๋๋ ๊ฒ์ MVC์ ์์๋ Dependents์ ์ ์ฌํ๋ฉฐ MVVM๊ณผ๋ ์๊ด์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ทฐ์ ๊ด๋ จ๋ ๋ก์ง์ ์ด๋์์ ์ฒ๋ฆฌํ๊ณ ์๋์ง๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค๋ง, ๋ง์ฝ ํด๋น์์ ๋ค์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ViewModel์ ๋ง๋ค์ด View์ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ผ๋ก ์ฐ๊ฒฐํ๋ค๋ฉด ์ด๋ ์ ๋๋ MVVM๊ณผ ๋ฎ์์๋ค๊ณ ๋งํ ์๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ์ง๋ง ์ฌ๊ธฐ์๋ ๋ฐ๋์ ๊ณ ๋ฏผํด๋ณด์ จ์ผ๋ฉด ํ๋ ๊ฒ์ UIKit์ด๋ SwiftUI์ ๋ทฐ(UIViewController, View)๋ฅผ WPF์ XAML ๊ฐ์ ๋งํฌ์ ๋ญ๊ท์ง๋ก ์์ฑ๋ ๋ทฐ์ฒ๋ผ ๊ฐ๋ฐํด์ผ ํ ์ด์ ๊ฐ ๋ฌด์์ธ๊ฐ๋ผ๋ ์ ์ ๋๋ค. ์ ๋ณ๋๊ฒ iOS ๊ฐ๋ฐ์๋ค์ Reactive Programming์ ์ข์ํ๋ ์ฌ๋๋ค์ด ๋ง๊ณ , ๊ทธ๋ฌํ ์ฌ๋๋ค์ด ์์ ๋ค์ด ๊ฐ๋ฐํ๋ ๋ฐฉ์์ MVVM์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒฝ์ฐ๋ค์ ๋ง์ด ๋ณด๊ณค ํฉ๋๋ค. ํ์ง๋ง ๋ณธ๋ MVVM๊ณผ Reactive Programming์ ์๊ด์ด ์์ต๋๋ค. Rx๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ง์ดํฌ๋ก์ํํธ์ ๊ฐ๋ฐํ๊ฒฝ(.NET)์์ ๋ง๋ค์ด์ง ๊ฒ์ด์ง๋ง WPF๋ Silverlight์์๋ MVVM์ ๊ตฌํํ๊ธฐ ์ํด Rx๋ฅผ ์ฐ์ง ์์ต๋๋ค. ๊ฒ๋ค๊ฐ WPF์ ์ํคํ ํธ์ธ John Gossman์ ์ต์ ๋ฒ ํจํด์ ํ์ฉํ๋ ๋ฐฉ์๋ค์ ๋ํ์ฌ ๋ถ์ ์ ์ธ ์๊ฒฌ์ ๋ฐํ๊ธฐ๋ ํ์ต๋๋ค. ๊ทธ๋ฐ ๋ฐฉ์์ ๋ถ์ ์ ์ด์๊ธฐ ๋๋ฌธ์ ์์คํ ์ ๋ด์ฅ๋ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ์์ง์ ๋ง๋ ๊ฒ์ด๊ธฐ๋ ํฉ๋๋ค. ๋ฐ๋ฉด์ Rx๋ ํ์๋ถํฐ Iterator Pattern, Observer Pattern, Functional Programming์ ์ํฅ์ ๊ฐํ๊ฒ ๋ฐ์ ๊ฒ์ด๊ธฐ์ ์คํ๋ ค ๋ณธ๋์ MVVM์ ๋งฅ๋ฝ๊ณผ๋ ๋ฐฐ์น๋๋ค๊ณ ์ ๋ ์๊ฐํฉ๋๋ค. ๋ต๋ณ์ด ๋์๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ถ๊ฐ์ ์ธ ์ง๋ฌธ์ด ์์ผ๋ฉด ์ฝ๋ฉํธ ๋จ๊ฒจ์ฃผ์๋ฉด ๋๊ฒ ์ต๋๋ค.
- Likes
- 0
- Comments
- 1
- Viewcount
- 772
Q&A
์ง๋ฌธ ๋๋ ค์!
๋ต๋ณ์ด ์ฌ๋ผ๊ฐ๊ธฐ ์ง์ ์ ์ง๋ฌธ์ด ์์ ๋์๋ค์.๋ง์ํ์ ๋๋ก ๋๋ฉ์ธ ์์ญ์ ์์ ์ด ๋ง์ต๋๋ค.Cocoa MVC์์๋ ๋ชจ๋ธ์ด ์ฒ๋ฆฌํ๋ ์์ ์ด๋ฉฐ, Cocoa MVC์์ ํ์๋ ์ํคํ ์ฒ ํจํด์ ์์ต๋๋ค. Cocoa MVC๋ ์ต์ ๋ฒ ํจํด์ผ๋ก ๋ชจ๋ธ๊ณผ ๋ทฐ๊ฐ ์ฐ๊ฒฐ๋์ด ์๋ ๊ฒ์ด ๋ทฐ์ ๋ชจ๋ธ์ ์ฌ์ฌ์ฉ์ฑ์ ๋จ์ด๋จ๋ฆฐ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๋ทฐ์ ๋ชจ๋ธ ๊ฐ์ ํต์ ์ ์ปจํธ๋กค๋ฌ๋ฅผ ํตํ๊ฒ๋ ๋ง๋ ์ํคํ ์ฒ์ผ ๋ฟ์ ๋๋ค.
- Likes
- 0
- Comments
- 2
- Viewcount
- 526
Q&A
์ง๋ฌธ ๋๋ ค์!
์๋ ํ์ธ์.๋คํธ์ํฌ ํต์ ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ฉ์ ๋น์ฆ๋์ค ๋ก์ง์ ํด๋น๋๋ ๊ฒ์ด๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌ๋ ๋ชจ๋ธ ๊ณ์ธต์ ์ฑ ์์ ๋๋ค. ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ ๊ณ์ธต์ ๋ช ์์ ์ผ๋ก ์ ์ํ๋ ๋ฑ ๋ฒ ์คํธ ํ๋ํฐ์ค๋ฅผ ์์ฒด์ ์ผ๋ก ์ ๊ณตํ๋ ค๋ ๊ฐ๋ฐํ๊ฒฝ๋ ์๊ณ ์ ํ ์ธ๊ธํ์ง ์๋ ๊ฐ๋ฐํ๊ฒฝ๋ ์์ต๋๋ค. ๊ตณ์ด ์ธ๊ธ์ด ์์ด๋ ํ๋ ์ ํ ์ด์ ๋ ์ด์ด์ ๋น์ฆ๋์ค ๋ ์ด์ด๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ์ ์ผ๋ฐ์ ์ธ ๋ด์ฉ์ด๋ฏ๋ก ๊ทธ๋ฐ ๋ช ์์ ์ธ ์ธ๊ธ์ด ์๋ค๋ ๊ฒ ์์ฒด๋ฅผ ๊ฐ๋ฐํ๊ฒฝ์ ์ํฅ์ด๋ผ๊ณ ๋ณด๊ธฐ๋ ์ด๋ ต์ต๋๋ค.MVP๋ MVVM์์๋ ์์ ์ค๋ช ํ ๋ด์ฉ๋ค์ ๋์ผํฉ๋๋ค. MVP๋ MVVM์ด ํ์ํ ์ด์ ๋ ๊ฐ๊ฐ์ ์น์ ์ ์ฐธ๊ณ ํด์ฃผ์ธ์.
- Likes
- 0
- Comments
- 2
- Viewcount
- 526
Q&A
์ง๋ฌธ ์ฌ๋ฆฝ๋๋ค
์๋ ํ์ธ์. ๋ค์ ํท๊ฐ๋ฆด ์ ์๋ ๋ถ๋ถ์ธ๋ฐ ์ฌ๋ ค์ฃผ์ ๊ทธ๋ฆผ์์ ๋ทฐ -> ๋ทฐ๋ชจ๋ธ ๋ฐฉํฅ์ ํ์ดํ๋ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ๋ฐฉํฅ์ด ์๋ ์์กด์ฑ์ ๋ฐฉํฅ์ด๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค. ์ฌ๋ ค์ฃผ์ ์ฌ์ง์ฒ๋ผ MVVM์์๋ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ํตํด์ View๋ง ViewModel์ ์์กดํ๊ณ ViewModel์ View์ ์์กดํ์ง ์์ต๋๋ค. MVP์ Passive View์์๋ ๋ทฐ์ ํ๋ ์ ํฐ๊ฐ ์๋ก ์์กดํ๋ฉฐ View -> Presenter ๋ฐฉํฅ์ผ๋ก ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํ๊ณ Presenter -> View ๋ฐฉํฅ์ผ๋ก UI๋ฅผ ๊ฐฑ์ ํ๋ ๋ฐฉ์์ผ๋ก ๋์ํ์์ฃ ? ๊ทธ๋ผ MVVM์์๋ ๋ทฐ๋ชจ๋ธ์ด ๋ทฐ๋ฅผ ๋ชจ๋ฅด๋๋ฐ ๋ทฐ๋ชจ๋ธ์์ ๋ณ๊ฒฝ์ด ์๊ฒผ์ ๋ UI์ ๋ณ๊ฒฝ๋ ๊ฐ์ด ์ด๋ป๊ฒ ๋ฐ์์ด ๋๋๊ฐ๋ผ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ฃผ๋ ๊ฒ์ด ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ๋๋ค. Passive View์์๋ ํ๋ ์ ํฐ๊ฐ ํ๋ ์ ํฐ ์์์ ์๋์ ์ผ๋ก ๋ทฐ์ ๊ฐฑ์ ํ๋ผ๋ ๋ช ๋ น์ ๋ด๋ ธ์ง๋ง, MVVM์์๋ ๋ทฐ ์์ ๊ฐฑ์ ์์ ์ bind ๋ฉ์๋๋ฅผ ํตํด ๋ฐ์ธ๋ฉํ์ผ๋ฏ๋ก ๋ทฐ๋ชจ๋ธ์ ๋ทฐ๋ฅผ ๋ชฐ๋ผ๋ ๋๋ ๊ฒ์ ๋๋ค. ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ๋ฐฉํฅ ์์ฒด๋ ์ํฉ์ ๋ฐ๋ผ์ ๋จ์ผ๋ฐฉํฅ์ผ์๋ ์๋ฐฉํฅ์ผ์๋ ์์ต๋๋ค.(์ฌ์ง)UI๊ฐ UILabel์ฒ๋ผ ์ฝ๊ธฐ์ ์ฉ(Read Only)์ธ ๊ฒฝ์ฐ UILabel์ด ๋ทฐ๋ชจ๋ธ์ ํน์ ํ๋กํผํฐ์ ๋ณํ๋ง ์ถ์ ํ๋๋ก OneWay ๋ฐ์ธ๋ฉ์ ํ๋ฉด ๋ ๊ฒ์ด๊ณ , ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋ ์ด๋ค UI์ ๊ฐ๊ณผ ๋ทฐ๋ชจ๋ธ์ ํน์ ํ๋กํผํฐ๋ฅผ ํญ์ ์ผ์น์ํค๋ ค๋ฉด TwoWay ๋ฐ์ธ๋ฉ์ ํ๋ฉด ๋๊ฒ ์ฃ ? ๊ทธ๋ฆฌ๊ณ UI์์ ์ด๋ค ์ ๋ ฅ์ด ๋ฐ์ํ์ ๋ ๊ทธ ์ ๋ ฅ์ ๋ทฐ๋ชจ๋ธ์ ์ ๋ฌ๋ง ํ๋ฉด ๋๋ค๋ฉด OneWayToSource๋ฅผ ํ๋ฉด๋๊ฒ ์ฃ ? ๋ฌผ๋ก WPF์ ๋ค๋ฅด๊ฒ ์ ์ด์ UIKit์์๋ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ง์ํด์ฃผ์ง ์๊ธฐ ๋๋ฌธ์ ์๋ฐํ๊ฒ ์ฉ์ด๋ฅผ ๊ตฌ๋ถํด์ ์ฌ์ฉํ์ง๋ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ์ ์ํฉ์ ๋ฐ๋ผ์ ์ ๋ ฅ์ ๋ทฐ๋ชจ๋ธ์ด ์ฒ๋ฆฌํ๋๋ก ์์ํ๊ณ (์์ฑ์๋ฅผ ํตํด์๋ , transform ๊ฐ์ ํจ์๋ฅผ ํตํด์๋ , ๋ทฐ๋ชจ๋ธ์ด ์์ ํ input ๊ฐ์ ํ๋กํผํฐ๋ฅผ public์ผ๋ก ๊ณต๊ฐํ๋ ), ์ถ๋ ฅํด์ผํ ๊ฐ์ bind ๋ฉ์๋๋ก ํน์ UI์ ๋ฐ์ธ๋ฉํ๋ค ์ด๋ฐ ๋ฉ์ปค๋์ฆ์ผ๋ก ๋์ํ๋ค๊ณ ์ดํดํ์๋๊ฒ ํธํ์ง ์์๊น ์๊ฐํฉ๋๋ค.
- Likes
- 0
- Comments
- 1
- Viewcount
- 523




