์งง์€

[ ์งง์€ ] 3 - MVC ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•˜๋ฉฐ

Forest Yun 2023. 10. 11. 21:01
728x90

 
 
 

3๏ธโƒฃ ์„ธ ๋ฒˆ์งธ '์งง์€'์„ ์‹œ์ž‘ํ•˜๋ฉฐ

'์งง์€' ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•œ ์ด์œ ๊ฐ€ ์ƒˆ๋กœ ๋ฐฐ์šด ๋‚ด์šฉ์ด ์žˆ์ง€๋งŒ ์‹œ๊ฐ„ ์ƒ์˜ ์ด์œ ๋กœ ์ •๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ์ด ์•„์‰ฌ์›Œ์„œ ์ธ๋ฐ, ๋‘ ๋ฒˆ์งธ ๊ธ€ ์ดํ›„ ๋ฐ”๋น ์„œ ๋˜๋Š” ๋‹ค๋ฅธ ๊ธ€์„ ์“ฐ๋Š๋ผ ๋‘ ๋‹ฌ์ด ์ง€๋‚˜๋„๋ก ์„ธ ๋ฒˆ์งธ ๊ธ€์„ ์“ฐ์ง€ ๋ชปํ–ˆ๋‹ค๐Ÿ˜ฉ
๊ทธ๋ž˜์„œ '์งง์€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ์˜์—ญ์„ ํ™•์žฅํ•ด, ์•ž์œผ๋กœ ์ •๋ฆฌํ•  ์ฃผ์ œ์— ๋Œ€ํ•œ ๊ณ„๊ธฐ์™€ ์˜์ง€๋ฅผ ์ ์–ด๋ณด๊ณ ์ž ํ•œ๋‹ค! 
 
 
 

๐Ÿ’ญ MVC์™€์˜ ๊ธฐ์–ต

์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์€ ์œ ์ง€๋ณด์ˆ˜, ๋ฌธ์ œ ๋ฐœ์ƒ ๋ฐฉ์ง€, ๋†’์€ ์žฌ์‚ฌ์šฉ์„ฑ ๋“ฑ์˜ ์ด์œ ๋กœ ํ”„๋กœ์ ํŠธ์— ์ ์šฉ๋˜๋ฉฐ, ์œ ๋ช…ํ•œ ํŒจํ„ด์œผ๋กœ๋Š” MVC, MVVM์ด ์žˆ๋‹ค. ์•„ํ‚คํ…์ณ์™€ ๊ด€๋ จํ•ด ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ํ•œ ๋ฒˆ์ฏค ๋“ค์–ด๋ณธ ์–˜๊ธฐ๊ฐ€ ์žˆ๋‹ค.

MVC์˜ M์€ 'masive'๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹๊นŒ ํ•˜๋Š” ์ •๋„๋กœ view controller๋งŒ ๋น„๋Œ€ํ•ด์ง€๋ฉฐ ์ด๋Š” ๋น„ํšจ์œจ์ ์ธ ํŒจํ„ด์ด๋‹ค.
๊ทธ๋Ÿฌ๋‹ˆ ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ํšจ์œจ์ ์ธ MVVM์„ ์“ฐ์ž.

 
MVC๋ผ๋Š” ๋ง์„ ๋“ฃ๊ณ  ์ด๊ฒŒ ๋ญ˜๊นŒ ํ•˜๋Š” ๋งˆ์Œ์— ๊ตฌ๊ธ€์— ๊ฒ€์ƒ‰ํ–ˆ๋˜ ๊ธฐ์–ต์ด ๋‚œ๋‹ค. MVC๋ฅผ ๊ฒ€์ƒ‰ํ•˜์ž๋งˆ์ž ์„ค๋ช…๊ณผ ๋‹จ์ , ๊ทธ๋ฆฌ๊ณ  MVVM ์–˜๊ธฐ๊ฐ€ ๋ฐ”๋กœ ์ด์–ด ๋‚˜์™”๋‹ค. ๋‚˜๋Š” ์ด ๋ง์„ ๋ณด๊ณ  '์˜ค MVVM์„ ๊ณต๋ถ€ํ•˜์ž' ์ƒ๊ฐ์ด ๋“ค์—ˆ๊ณ , ์ดํ›„ ์–ด๋Š ์ •๋„ iOS ๊ฐœ๋ฐœ์„ ํ•˜๊ฒŒ ๋  ์ค„ ์•Œ๊ฒŒ ๋˜์ž MVVM์„ ์ ์šฉํ•œ Rx ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค.
 
 
 

๐Ÿ‘€ ๊ทธ๋ž˜์„œ MVVM์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ž˜ ํ–ˆ์–ด?

์งˆ๋ฌธ์— ๋‹ตํ•˜๊ธฐ ์ „ MVVM์˜ ์ ์šฉ ๊ณ„๊ธฐ๋ถ€ํ„ฐ ์–˜๊ธฐํ•˜์ž๋ฉด, ์ƒˆ๋กœ ์‹œ์ž‘ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ํ™€๋กœ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋งก๊ฒŒ ๋˜๋ฉฐ ๋„์ „์ ์ธ ์š”์†Œ๊ฐ€ ์—†์„ ๊ฒƒ ๊ฐ™์•„ "Rx๋ฅผ ํ•ด๋ณผ๊นŒ?" ์ƒ๊ฐํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๋งˆ์นจ ์ตœ๊ทผ iOS ๊ฐ•์˜ ์ค‘ Rx ํŒŒํŠธ๋ฅผ ์ˆ˜๊ฐ•ํ–ˆ์—ˆ๊ณ  ๊ณต๋ถ€๋Š” ์ค€๋น„ํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์‹œ์ž‘ํ•ด์•ผ ๋Š˜๊ธฐ ๋•Œ๋ฌธ์—, Rx ๊ทธ๋ฆฌ๊ณ  ํ•ญ์ƒ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” MVVM์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค.
Rx์— ๋Œ€ํ•ด์„œ๋„ ํ•˜๊ณ  ์‹ถ์€ ๋ง์ด ๋งŽ์ง€๋งŒ ๊ทธ๊ฑด ๋‹ค์Œ์œผ๋กœ ๋ฏธ๋ฃจ๊ฒ ๋‹ค. ๊ฒฐ๋ก ์ ์œผ๋กœ Rx๋ฅผ ์ด์ œ ๋‹ค๋ฃฐ ์ค„ ์•ˆ๋‹ค! ๋ฌผ๋ก  ์ด๋ก ์ ์œผ๋กœ ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•  ๊ฒƒ๋“ค์ด ์‚ฐ๋”๋ฏธ๊ฐ™์ด ์žˆ์ง€๋งŒ, ํ”„๋กœ์ ํŠธ๋ฅผ ์•ฝ 6๊ฐœ์›”๋™์•ˆ ํ•˜๋‹ˆ ํ•  ์ค„์€ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค๐Ÿคฃ
MVVM์— ๋Œ€ํ•œ ๋Œ€๋‹ต์œผ๋กœ๋Š” '๊ธ€์Ž„..'๋ผ๊ณ  ํ•˜๊ณ  ์‹ถ๋‹ค. ์ผ๋‹จ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ MVVM์— ๋Œ€ํ•ด model, view model, view ๋งŒ ์•Œ๊ณ  ์‹œ์ž‘ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ฆฌ๊ณ  MVVM ๊ตฌ์กฐ๋ฅผ ๊ฐ•์˜์—์„œ ๋ณด์—ฌ์ค€ ๊ฑธ ๊ทธ๋Œ€๋กœ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์ ํŠธ๊ฐ€ ์ปค์ง€๋ฉด ์ปค์งˆ์ˆ˜๋ก ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์ ์  ์‚ฌ๋ผ์ง€๋Š” ๊ฒƒ ๊ฐ™์•˜๋‹ค. ๊ทธ๋ž˜์„œ ํ”„๋กœ์ ํŠธ ์ค‘๋ฐ˜๋ถ€๋•Œ๋ถ€ํ„ฐ ์•„ํ‚คํ…์ณ๋ž€ ๋ญ˜๊นŒ, model์€ ๋ญ˜๊นŒ, MVC๊ฐ€ ์ •๋ง ์•ˆ ์ข‹์€ ๊ฑธ๊นŒ ๋“ฑ ๋จธ๋ฆฟ์†์— ๋งŽ์€ ์งˆ๋ฌธ๋“ค์ด ์Ÿ์•„์กŒ๋‹ค.
๊ทธ๋ž˜์„œ ์ค‘๊ฐ„์ค‘๊ฐ„ ๊ณต๋ถ€ํ•˜๊ธฐ๋„ ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ด๋ณด๊ธฐ๋„ ํ•˜๋ฉฐ ๊ณ„์† ๋…ธ๋ ฅํ–ˆ๋‹ค. ๋…ธ๋ ฅ ์ค‘ ํ•˜๋‚˜๋กœ๋Š” ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๊ณ ์ž ํ–ˆ๋‹ค. View๋ฅผ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ์—ด์‹ฌํžˆ ๋ถ„๋ฆฌํ–ˆ๊ณ , extension์„ ์‚ฌ์šฉํ•ด ๊ธฐ๋Šฅ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค.
 
 
 
 

๐Ÿค” ๋‚˜๋Š” MVC๋ฅผ ์ ์šฉํ•ด๋ณธ ์  ์žˆ๋‚˜?

์ง€๋‚œ 8์›” ์›ํ‹ฐ๋“œ ํ”„๋ฆฌ์˜จ๋ณด๋”ฉ ์ฑŒ๋ฆฐ์ง€์— ์ฐธ์—ฌํ•˜๋ฉฐ ์•ผ๊ณฐ๋‹˜์˜ SwiftUI๋ฅผ ๋“ค์—ˆ๋‹ค. SwiftUI์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๋Š” ์ž๋ฆฌ์˜€๊ธฐ์— MVVM ์–˜๊ธฐ๊ฐ€ ๋น ์งˆ ์ˆ˜ ์—†์—ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด ์–˜๊ธฐ๋ฅผ ํ•˜๋Š”๋ฐ ์•ผ๊ณฐ๋‹˜์ด ํ•œ ๊ฐ€์ง€ ์งˆ๋ฌธ์„ ํ•˜์…จ๋‹ค.(๊ธฐ์–ต์ด ์ž˜ ๋‚˜์ง€ ์•Š์•„ ๋ฌธ์žฅ์ด ์ •ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹คห™แต•ห™)

MVC๋ฅผ ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•ด ๋ณด์‹  ์  ์žˆ๋‚˜์š”?

 
์ด ์งˆ๋ฌธ์„ ๋ฐ›๊ณ  ์ •๋ง ๋งŽ์€ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ์ผ๋‹จ MVC๋ฅผ ์‚ฌ์šฉํ•ด ๋ณธ ์ ์ด ์žˆ๋Š”๊ฐ€? ๋‚˜๋Š” ์ผ๋‹จ ์—†๋‹ค. view controller๋กœ ์ž‘์—…๋„ ํ–ˆ๋ดค๊ณ  view๋„ ๋งŒ๋“ค์–ด ๋ดค๊ณ  model๋„ ๋งŒ๋“ค์–ด๋ดค์ง€๋งŒ, MVC ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์„ ์ ์šฉํ•ด๋ณด์ง€๋Š” ์•Š์•˜๋‹ค. MVVM์€ ์™œ ์‚ฌ์šฉํ–ˆ๋Š”๊ฐ€? Rx๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ MVVM์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•ด์„œ.

+ SwiftUI์— ๋Œ€ํ•ด์„œ ์ž ๊น ์–˜๊ธฐํ•˜์ž๋ฉด, ์•ผ๊ณฐ๋‹˜์€ ๋‹ค๋“ค SwiftUI์™€ MVVM์„ ํ•จ๊ป˜ ์–˜๊ธฐํ•˜์ง€๋งŒ, Apple์—์„œ SwiftUI๊ฐ€ MVVM์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๋ง์„ ํ•˜์ง€๋Š” ์•Š์•˜๋‹ค๊ณ  ์ง‘์–ด์ฃผ์…จ๋‹ค. ์ด๊ฒƒ๋„ ์ฐธ ๋‹ค์–‘ํ•œ ์ƒ๊ฐ์ด ๋“ค๊ฒŒ ํ–ˆ๋‹ค.

 
 
๋‹ค์‹œ ํ”„๋กœ์ ํŠธ ์ค‘๋ฐ˜๋ถ€๋•Œ ์•„ํ‚คํ…์ณ์— ๋Œ€ํ•ด ๊ตฌ๊ธ€๋ง์„ ์—ด์‹ฌํžˆ ํ–ˆ์„ ๋•Œ๋กœ ๋Œ์•„๊ฐ€๋ณด์ž. ์—„์ฒญ ์—ด์‹ฌํžˆ MVC, MVP, MVVM ๋“ฑ์„ ๊ฒ€์ƒ‰ํ•˜๋ฉด์„œ ๋„๋Œ€์ฒด ์ด๊ฒƒ๋“ค์€ ๋ฌด์—‡์ธ๊ฐ€, view์™€ model์€ ๋ฌด์—‡์ธ๊ฐ€ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ฝ์–ด๋ณด์•˜๋‹ค. ๊ทธ๋Ÿฌ๋ฉด์„œ model์˜ ์—ญํ• ์ด ๊ฝค ํฌ๋‹ค๋Š” ๊ฑธ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ , ์—ฌ๋Ÿฌ ๋‚ด์šฉ๋“ค์„ ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ ์ค‘ ๊ฐ€์žฅ ์ธ์ƒ ๊นŠ์—ˆ๋˜ ๊ฑด ์•„๋ž˜ ๋ฌธ์žฅ์ด์—ˆ๋‹ค. (์ด๊ฒƒ๋„ ๊ธฐ์–ต์ด ์ž˜ ๋‚˜์ง€ ์•Š์•„ ๋ฌธ์žฅ์ด ์ •ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹คห™แต•ห™)

๋ชจ๋“  ์•„ํ‚คํ…์ฒ˜์˜ ๊ธฐ๋ณธ์€ View์˜ ๋ถ„๋ฆฌ์ด๋‹ค.

 
์ •ํ™•ํ•˜๊ฒŒ ๊ธฐ์–ต์€ ์•ˆ ๋‚˜์ง€๋งŒ, '์–ด๋–ค ์•„ํ‚คํ…์ฒ˜๋ฅผ ์“ธ์ง€ ๊ณ ๋ฏผํ•˜๊ธฐ ์ „์— View ๋ถ„๋ฆฌ๋ถ€ํ„ฐ ํ•˜๋ผ', '๊ธฐ๋ณธ์€ View์˜ ๋ถ„๋ฆฌ'๋ผ๋Š” ์–˜๊ธฐ์˜€๋‹ค. ์ด ๋ถ„์˜ ๊ธ€์„ ์ฝ๊ณ , View ๋ถ„๋ฆฌ๋ฅผ ์ œ๋Œ€๋กœ ํ•ด๋ณธ ์ ์ด ์žˆ๋Š”์ง€ ์ƒ๊ฐํ•ด ๋ณด์•˜๋‹ค. <๊ฒŒ์œผ๋ฅธ์ฟ ํ‚ค>, <์•ผ๊ธฐ>, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋‹น์‹œ ํ•˜๊ณ  ์žˆ๋˜ ์ƒˆ ํ”„๋กœ์ ํŠธ <์›ํ”„>๋„ View๋ฅผ ๊ทธ๋‹ค์ง€ ๋ถ„๋ฆฌํ•˜์ง€ ์•Š์•˜๋‹ค. ์™œ ๊ทธ๋žฌ๋‚˜ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ, ์ปค์Šคํ…€ ๋ทฐ๋ฅผ ๋งŒ๋“œ๋Š”๊ฒŒ ํ—ท๊ฐˆ๋ ธ๊ณ , ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š”๊ฒŒ ์–ด๋ ค์›Œ ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•ด์•ผํ• ์ง€ ๋ชฐ๋ž๋‹ค. ์ด๋•Œ ํ•œ ๊ฐ€์ง€ ๋‹ค์ง์„ ํ–ˆ๋‹ค. ๋‚ด๊ฐ€ ์•„ํ‚คํ…์ฒ˜๋Š” ์ž˜ ๋ชจ๋ฅผ ์ง€๋ผ๋„ View๋Š” ๋ถ„๋ฆฌํ•œ๋‹ค!
 
 
 

๐Ÿ”ซ MVC ๋์žฅ๋‚ผ ๊ฑฐ์•ผ

View๋ฅผ ๋ถ„๋ฆฌํ•˜๊ฒ ๋‹ค๋Š” ๋‹ค์ง ์ดํ›„๋กœ <์›ํ”„> ์ค‘๊ฐ„์ค‘๊ฐ„ ๋ฆฌํŒฉํ† ๋ง๋„ ์ง„ํ–‰ํ•˜๋ฉฐ ์‹œ๊ฐ„๊ณผ ์—ญ๋Ÿ‰์ด ๋‹ฟ๋Š” ํ•œ View๋ฅผ ๋ถ„๋ฆฌํ–ˆ๋‹ค. ๋”ํ•ด์„œ ๊ธฐ๋Šฅ๋„ ๋ถ„๋ฆฌํ•˜๋ ค ๋…ธ๋ ฅํ–ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋…ธ๋ ฅ์„ ํ•˜๋‹ˆ ๋ถ„๋ฆฌ๊ฐ€ ์–ด๋ ต์ง€ ์•Š์•„์กŒ๊ณ , ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๋” ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„๊นŒ ๊ณ ๋ฏผํ–ˆ๋‹ค. ๋” ๋‚˜์•„๊ฐ€ ์ •๋ง ์ œ๋Œ€๋กœ MVC๋ฅผ ์ ์šฉํ•ด๋ณด๋ฉด ์–ด๋–จ์ง€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค.
iOS๋ฅผ ์‹œ์ž‘ํ•œ์ง€ ์•ฝ 3-4๊ฐœ์›”์ฏค ๋์„๋•Œ ๋งŒ๋“  <๊ฒŒ์œผ๋ฅธ์ฟ ํ‚ค>๋ผ๋Š” ์•ฑ์ด ์žˆ๋‹ค. ์ •๋ง ๊ทธ๋•Œ ๊ธฐํš, ๋””์ž์ธ, ๊ฐœ๋ฐœ๊นŒ์ง€ ํ˜ผ์ž ๋‹ค ํ•˜๋ฉด์„œ ๋„ˆ๋ฌด ์–ด๋ ต๊ณ  ํž˜๋“ค์—ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์ž‘๊ณ  ์†Œ์ค‘ํ•œ ์•ฑ์„ ๋งŒ๋“ค์–ด ์•ฑ์Šคํ† ์–ด์— ๋ฐฐํฌ๊นŒ์ง€ ํ•ด์„œ ์ •๋ง ํ–‰๋ณตํ–ˆ๋‹ค. ๊ทธ ์•ฑ์€ ํƒ€์ด๋จธ ์•ฑ์ธ๋ฐ ์‚ฌ์‹ค ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ๋Š” ๋Œ์•„๊ฐ€์ง€ ์•Š์•„ ๊ฐœ์„ ์ด ํ•„์š”ํ•œ ์„œ๋น„์Šค์ด๋‹ค. ํ•˜์ง€๋งŒ ๊ณ„์† ํ•™์—…, ๋Œ€์™ธํ™œ๋™, iOS ๊ณต๋ถ€ ๋“ฑ์„ ํ•˜๋‹ค ๋ณด๋‹ˆ ํ•œ ๋ฒˆ๋„ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ์— ์ด ์•ฑ์„ ์ƒˆ๋กญ๊ฒŒ ๋งŒ๋“ค๋ฉฐ MVC๋ฅผ ์ œ๋Œ€๋กœ ์ ์šฉํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ๋”๋ถˆ์–ด ํ”„๋กœํ† ์ฝœ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ, SnapKit๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” Code-based UI, Observer ๋“ฑ ๋ชจ๋“  ๊ฑธ built-in๋˜๊ณ  Swift์—์„œ ์ง€ํ–ฅํ•˜๋Š” ๊ฒƒ๋“ค๋กœ๋งŒ ๋งŒ๋“ค ์˜ˆ์ •์ด๋‹ค.
์ง€๊ธˆ๊นŒ์ง€ SnapKit, Rx, AlamoFire, Kingfisher ๋“ฑ์„ ์‚ฌ์šฉํ•˜๋ฉฐ ํ•ญ์ƒ ์™œ ์‚ฌ์šฉํ•˜๋Š” ๊ฑธ๊นŒ ๊ถ๊ธˆํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•œ ๋ฒˆ์ฏค์€ ์›๋ž˜์˜ ๊ฒƒ์„ ์‚ฌ์šฉํ•ด๋ณด์ž ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ๊ฐ€์žฅ ์ฒ˜์Œ์— ๋งŒ๋“  <๊ฒŒ์œผ๋ฅธ์ฟ ํ‚ค>๊ฐ€ ์ ํ•ฉํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ์ด๋ฒˆ ๊ธฐํšŒ์— Swift์™€ iOS์— ๋Œ€ํ•ด ์™„์ „ํžˆ ์•Œ์•„๊ฐ€๊ณ  ์‹ถ๋‹ค.
 
 
 

 

โž• ๊ณต๋ถ€ ์‹œ์ž‘

 

[ iOS ] MVC - 1) MVC๋ž€?

Model - View - Controller ์•„ํ‹ฐํด์„ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. Model-View-Controller Retired Document Important: This document may not represent best practices for current development. Links to downloads and other resources may no longer be valid. M

88yhtserof.tistory.com

 

728x90