๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•

๐ŸŽ iOS/Architecture12

[Design Pattern] MVVM(Model - View - ViewModel) ํŒจํ„ด์ด๋ž€? (feat. Swift) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์ •๋ง ์˜ค๋žœ๋งŒ์— ๋””์ž์ธ ํŒจํ„ด์„ ์ •๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ์š”. ๊ทธ ์ค‘์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ(?)์žˆ๊ณ  ํ•ซํ•œ MVVM ๋””์ž์ธ ํŒจํ„ด์„ ๋‹ค๋ค„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. (SwiftUI ๋˜ํ•œ ๊ธฐ๋ณธ ๋””์ž์ธ ํŒจํ„ด์œผ๋กœ MVVM์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.) ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ MVVM(Model - View - ViewModel)ํŒจํ„ด์ด๋ž€? ๐Ÿง MVVM์€ ํ•˜๋‚˜์˜ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด ์œผ๋กœ GUI ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(๋ทฐ)์˜ ๊ฐœ๋ฐœ์„ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋˜๋Š” ๋ฐฑ์—”๋“œ ๋กœ์ง(๋ชจ๋ธ)๋กœ๋ถ€ํ„ฐ ๋ถ„๋ฆฌ์‹œ์ผœ์„œ ๋ทฐ๊ฐ€ ์–ด๋Š ํŠน์ •ํ•œ ๋ชจ๋ธ ํ”Œ๋žซํผ์— ์ข…์†๋˜์ง€ ์•Š๋„๋ก ํ•ด์ค€๋‹ค. MVVM์˜ ๋ทฐ ๋ชจ๋ธ์€ ๊ฐ’ ๋ณ€ํ™˜๊ธฐ์ธ๋ฐ, ์ด๋Š” ๋ทฐ ๋ชจ๋ธ์ด ๋ชจ๋ธ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ฐ์ฒด๋ฅผ ๋…ธ์ถœ(๋ณ€ํ™˜)ํ•˜๋Š” ์ฑ…์ž„์„ ์ง€๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ํ‘œํ˜„ํ•˜๊ธฐ๊ฐ€ ์‰ฌ์›Œ์ง„๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.. 2021. 10. 19.
[iOS/Framework] Quick/Nimble์ด ๋ญ˜๊นŒ? (feat. ์‚ฌ์šฉ๋ฒ•) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ์„ ์ฐพ์•„๋ณด๋‹ค๊ฐ€ ์šฐ์—ฐํžˆ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋ถ„๋“ค์ด Quick๊ณผ Nimble์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ Quick๊ณผ Nimble์ด ์–ด๋–ค ๊ฒƒ์ด๊ณ  ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Quick ๋จผ์ € Quick์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž์‹ ๋“ค์„ ์†Œ๊ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. RSpec, Specta,Ginkgo์—์„œ ์˜๊ฐ์„ ๋ฐ›์€ Swift ๋ฐ Objective-C๋ฅผ ์œ„ํ•œ ํ–‰๋™ ์ค‘์‹ฌ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ฆ‰ iOS ์ „์šฉ BDD ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๋Š” ๊ฒƒ์ด์ฃ . ์ •๋ง ๋†€๋ž๊ฒŒ๋„ ํ•œ๊ตญ์–ด ๋ฒ„์ „์œผ๋กœ ๋ฌธ์„œ๊ฐ€ ์ œ๊ณต๋˜์–ด ์žˆ์–ด ๊ตฌ์ฒด์ ์œผ๋กœ ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์€ ์—ฌ๊ธฐ์—์„œ ์ฝ์–ด๋ณด์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. GitHub - Quick/Quick: The Swift (and Objective-C) te.. 2021. 8. 31.
[RIBs] AddMemo ๊ตฌํ˜„ํ•˜๊ธฐ (๋ฉ”๋ชจ ์ถ”๊ฐ€ํ•˜๊ธฐ) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ์‹œ๊ฐ„์—” ๋ฉ”๋ชจ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์‚ญ์ œํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ์š”. ์˜ค๋Š˜์€ AddMemoViewController๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๋ฉ”๋ชจ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๊ตฌํ˜„ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ AddMemoRIB ์Šคํ† ๋ฆฌ๋ณด๋“œ์™€ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํฌํ•จํ•œ AddMemoRIB์„ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”. AddMemoViewController.storyboard AddMemoViewController๋Š” ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•  ํ…์ŠคํŠธํ•„๋“œ์™€ ์ถ”๊ฐ€๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค. ํ…์ŠคํŠธํ•„๋“œ์—” ์ˆซ์ž๋งŒ ๋“ค์–ด๊ฐ€์•ผํ•˜๋ฏ€๋กœ keyboard type์„ numberPad๋กœ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. StoryboardInstantiate ์ƒˆ๋กœ์šด ์Šคํ† ๋ฆฌ๋ณด๋“œ ๋ทฐ์ธ AddMemoViewController๋ฅผ enum์— ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค. enum Storyboard: Stri.. 2021. 8. 26.
[RIBs] Memo ์‚ญ์ œ,์ˆ˜์ • ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ์‹œ๊ฐ„์— Memo๊นŒ์ง€ ์ด๋™ํ•ด์„œ ํ™”๋ฉด์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ๊นŒ์ง€ ๊ตฌํ˜„ํ–ˆ์—ˆ๋Š”๋ฐ์š”. ์˜ค๋Š˜์€ Memoํ™”๋ฉด์—์„œ ์ผ์–ด๋‚˜๋Š” ์‚ญ์ œ,์ˆ˜์ •์„ ๊ตฌํ˜„ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ MemoViewController.storyboard ์Šคํ† ๋ฆฌ๋ณด๋“œ ํ™”๋ฉด ๊ตฌ์„ฑ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ํ…Œ์ด๋ธ”๋ทฐ๋ฅผ ๋„ฃ์–ด์ฃผ๊ณ  ํ…Œ์ด๋ธ”๋ทฐ ์…€์€ MemoTableViewCell์„ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”๋ทฐ์…€์€ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•ด์ค„ Label,์‚ญ์ œ๋ฒ„ํŠผ.๋”ํ•˜๊ธฐ๋ฒ„ํŠผ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. Memo ๋ฉ”๋ชจ๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ์ˆซ์ž๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. struct Memo { let number:Int } MemoData ์›๋ž˜ ์„œ๋ฒ„์™€ ํ†ต์‹ ์„ ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์•ผํ•˜์ง€๋งŒ...๊ท€์ฐฎ์œผ๋‹ˆ๊น .. ์ „์—ญ์œผ๋กœ ์„ ์–ธํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ์„ธํŒ…ํ•ด.. 2021. 8. 26.
[RIBs] Router๋ฅผ ์ด์šฉํ•ด ํ™”๋ฉด ์ „ํ™˜ํ•ด๋ณด๊ธฐ (feat. Memo) ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ RIBs ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™”๋ฉด ์ „ํ™˜ํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด Uber์˜ ํŠœํ† ๋ฆฌ์–ผ์„ ๋”ฐ๋ผํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜... ์ €๋Š” ์ž˜์•ˆ๋˜๋”๋ผ๊ตฌ์š”... ๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ์ข‹์€ ํŠœํ† ๋ฆฌ์–ผ์ด ์—†์„๊นŒ? ํ•˜๊ณ  ์—ด์‹ฌํžˆ ์ฐพ์•„๋ณด๋‹ค๊ฐ€ SimpleMemo๋ฅผ RIBs๋กœ ๊ตฌํ˜„ํ•œ ํŠœํ† ๋ฆฌ์–ผ ์ฐพ๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. GitHub - eunjin3786/SimpleMemo-RIBs: SimpleMemo๋ฅผ RIBs๋กœ ๋ฐ”๊ฟ”๋ณด์ž :-) SimpleMemo๋ฅผ RIBs๋กœ ๋ฐ”๊ฟ”๋ณด์ž :-). Contribute to eunjin3786/SimpleMemo-RIBs development by creating an account on GitHub. github.com ์ „ ํฌ์ŠคํŒ…์—์„œ RootRIB์—์„œ LoggedOutRIB์„.. 2021. 8. 24.
[RIBs] Interactor๋กœ ๋น„๋‹ˆ์ง€์Šค ๋กœ์ง ์ฒ˜๋ฆฌํ•ด๋ณด๊ธฐ (feat. ์ดˆ๊ธฐ์„ธํŒ…) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ๊ธ€์—์„œ RIBs ์— ๋Œ€ํ•œ ์ด๋ก ์„ ๋‹ค๋ค˜๋Š”๋ฐ์š”. (ํ˜น์‹œ ์•ˆ๋ณด์‹  ๋ถ„๋“ค์€ ์—ฌ๊ธฐ ์—์„œ ๋ณด๊ณ  ์™€์ฃผ์„ธ์š”~) ์˜ค๋Š˜์€ Uber์—์„œ ์ง์ ‘ ์ œ๊ณตํ•˜๋Š” ํŠœํ† ๋ฆฌ์–ผ์„ ํ•œ๋ฒˆ ๋”ฐ๋ผํ•ด๋ณด๋ฉด์„œ ๊ตฌํ˜„ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๊ฐ€์žฅ ๋จผ์ € RIBs ํŠœํ† ๋ฆฌ์–ผ์„ ๋”ฐ๋ผํ•  ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด์ค˜์•ผ๊ฒ ์ฃ ? ์ €๋Š” RIBs Example๋กœ ์ด๋ฆ„ ์ง“๊ฒ ์Šต๋‹ˆ๋‹ค. Pod init & install ์ €๋Š” CocoaPod์„ ์ด์šฉํ•ด์„œ RIBs๋ฅผ ์„ค์น˜ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์—์„œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•ด pod init์„ ํ•ด์ฃผ์‹œ๋ฉด pod file์ด ์ƒ๊ธธ๊ฑฐ์—์š”. ํŒŸํŒŒ์ผ์— ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. (๋ฒ„์ „์€ ๋ฐ”๋€” ์ˆ˜ ์žˆ์œผ๋‹ˆ ๊ณต์‹ ๊นƒํ—™์—์„œ ํ™•์ธํ•ด์ฃผ์„ธ์š”!) pod 'RIBs', '~> 0.9' ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ pod ins.. 2021. 8. 18.
[Design Pattern] RIBs๋ž€?(feat. Uber) ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ Uber์—์„œ ๋งŒ๋“  ํ”„๋ ˆ์ž„์›Œํฌ์ธ RIBs์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. iOS๊ณ„์—์„œ ์•„์ฃผ ๊ณ ์ˆ˜์ด์‹  '๋ฏผ์†Œ๋„ค'๋‹˜๋„ ์—ฌ๋Ÿฌ ๋””์ž์ธ ํŒจํ„ด์„ ๊ฑฐ์ณ์„œ RIBs์— ์ •์ฐฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค๊ณ  ํ•˜๊ณ  ๋˜ ๋งŽ์€ ํšŒ์‚ฌ์—์„œ RIBs ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋”๋ผ๊ตฌ์š”. ๊ทธ๋ž˜์„œ ์–ด๋–ค ์ ์ด ์žฅ์ ์ด๊ณ  ๋˜ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ RIBs๋ž€? ๊ณต์‹ ๊นƒํ—™์—์„  ์ด๋ ‡๊ฒŒ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. RIBs๋Š” Uber์˜ ๋ชจ๋ฐ”์ผ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์•„ํ‚คํ…์ฒ˜ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. RIB์ด๋ผ๋Š” ์ด๋ฆ„์€ ์ด ์•„ํ‚คํ…์ฒ˜์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ์ธ Router, Interactor ๋ฐ Builder์˜ ์•ฝ์–ด์ž…๋‹ˆ๋‹ค. ์ด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋งŽ์€ ์ˆ˜์˜ ์—”์ง€๋‹ˆ์–ด์™€ ์ค‘์ฒฉ ์ƒํƒœ๊ฐ€ ์žˆ๋Š” ๋ชจ๋ฐ”์ผ ์•ฑ์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ณต RIBs ์•„ํ‚ค.. 2021. 8. 18.
[Design Pattern] MVP ํŒจํ„ด์ด๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ Model - View - Presenter๋กœ ์ด๋ค„์ ธ์žˆ๋Š” M.V.P ๋””์ž์ธ ํŒจํ„ด์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๋ถ€ํ„ฐ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. MVP๋ž€? Model - View - Presenter ๋กœ ์ด๋ค„์ง„ ๋””์ž์ธ ํŒจํ„ด์ด๋ฉฐ MVC์—์„œ Controller๊ฐ€ ํ•˜๋Š” ์—ญํ• ์„ Presenter๊ฐ€ ํ•œ๋‹ค๊ณ  ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค. "๊ทธ๋Ÿฌ๋ฉด MVC ์“ฐ๋ฉด ๋˜์ง€ ์™œ MVP๋ฅผ ์จ?" MVC๋Š” Model๊ณผ View๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด ์˜์กด๊ด€๊ณ„๋ฅผ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ MVP๋Š” Model๊ณผ View ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๊ณ  ์˜ค์ง Presenter๋ฅผ ํ†ตํ•ด์„œ ์ƒํƒœ๋‚˜ ๋ณ€ํ™”๋ฅผ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ View์™€ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์ด ์™„์ „ํžˆ ๋ถ„๋ฆฌ๊ฐ€ ๋˜์–ด ํ…Œ์ŠคํŠธ๊ฐ€ ์šฉ์ดํ•ด์ง„๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ทฐ๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ๊ณผ์ •์„.. 2021. 8. 11.
[Design Pattern] ReactorKit์ด๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ RxSwift์™€ MVVM ๋””์ž์ธ ํŒจํ„ด์„ ์‚ฌ์šฉํ• ๋•Œ ์•„์ฃผ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ด๋Š” ReactorKit์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ReactorKit์ด๋ž€? ReactorKit ๊ณต์‹ ๊นƒํ—ˆ๋ธŒ์—์„œ๋Š” ์ด๋ ‡๊ฒŒ ์†Œ๊ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ReactorKit์€ ๋ฐ˜์‘ํ˜• ๋ฐ ๋‹จ๋ฐฉํ–ฅ Swift ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ์œ„ํ•œ ํ”„๋ ˆ์ž„ ์›Œํฌ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…๋“œ๋ฆฌ๋ฉด ReactorKit์€ ์•„๋ž˜์™€ ๊ฐ™์ด Reactor์™€ View๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š”๋ฐ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์„ Action๊ณผ State๋กœ ๋‚˜๋ˆˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ViewModel ์—ญํ• ์„ Reactor๊ฐ€ ํ•˜๋Š”๋ฐ ์ด ViewModel์—์„œ ์ผ์–ด๋‚˜๋Š” ๋ฐ˜์‘ํ˜• ์ด๋ฒคํŠธ๋“ค์„ ์•ก์…˜๊ณผ ์ƒํƒœ๋กœ ๋‚˜๋ˆˆ ๊ฒƒ์ด์ฃ ! ReactorKit์„ ์“ฐ๋ฉด ๋ญ๊ฐ€ ์ข‹์€๋ฐ? 1. ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์‰ฝ๋‹ค. ๋ทฐ์—์„œ.. 2021. 6. 17.
[Design Pattern] Apple์˜ MVC ํŒจํ„ด์ด๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ๊ธ€์— MVC ํŒจํ„ด์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค˜์—ˆ๋Š”๋ฐ iOS์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ๊ณผ๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด๊ฒŒ ์ปค์Šคํ…€๋ทฐ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด์„œ ๋ญ”๊ฐ€ ๋” ์ •์„์ ์ธ MVC ํŒจํ„ด์„ ๊ตฌํ˜„ํ–ˆ์–ด์š”. (ํ˜น์‹œ ์•ˆ๋ณด์…จ๊ฑฐ๋‚˜ ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์€ ์—ฌ๊ธฐ ์—์„œ ๋ด์ฃผ์„ธ์š”!) ํ•˜์ง€๋งŒ ๋ณดํ†ต MVCํ•˜๊ณ ๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅธ ๋ถ€๋ถ„์ด ์žˆ์–ด์š”. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ์• ํ”Œ์˜ MVC ํŒจํ„ด์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! Apple's MVC ์• ํ”Œ์€ ์ „ํ˜•์ ์ธ MVC ํŒจํ„ด์—์„œ ๋ชจ๋ธ๊ณผ ๋ทฐ์™€ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์„œ๋กœ ์˜์กด์ ์ธ ๊ฒƒ์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ž์‹ ๋“ค๋งŒ์˜ MVC ํŒจํ„ด์„ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ทฐ์™€ ๋ชจ๋ธ์„ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ์–ด ์„œ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๊ณ  ์„œ๋กœ์— ๋Œ€ํ•ด ์•Œ ํ•„์š”๊ฐ€ ์—†๊ฒŒ๋” ๋งŒ๋“œ๋ ค๊ณ  ํ–ˆ์œผ๋‚˜.... ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ทฐ์˜ ๋ผ์ดํ”„ ์‚ฌ์ดํด์— ๊ด€์—ฌํ•˜๊ฒŒ ๋˜๋ฉด์„œ MV - C ํŒจํ„ด์ด ๋˜์–ด๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด์„œ.. 2021. 6. 3.
[Design Pattern] MVCํŒจํ„ด์ด๋ž€? (Model-View-Controller) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ ์ฃผ์ œ๋Š” ํ”ํžˆ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ธ Model - View -Controller ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”! MVC ํŒจํ„ด์ด๋ž€? "MVC๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค. ์ด ํŒจํ„ด์„ ์„ฑ๊ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋กœ๋ถ€ํ„ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹œ๊ฐ์  ์š”์†Œ๋‚˜ ๊ทธ ์ด๋ฉด์—์„œ ์‹คํ–‰๋˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์„œ๋กœ ์˜ํ–ฅ ์—†์ด ์‰ฝ๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. MVC์—์„œ ๋ชจ๋ธ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ๋ทฐ๋Š” ํ…์ŠคํŠธ, ์ฒดํฌ๋ฐ•์Šค ํ•ญ๋ชฉ ๋“ฑ๊ณผ ๊ฐ™์€ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ , ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์‚ฌ์ด์˜ ์ƒํ˜ธ๋™์ž‘์„ ๊ด€๋ฆฌํ•œ๋‹ค." - ์œ„ํ‚ค ๋ฐฑ๊ณผ- ์žฅ์  ๋‹ค๋ฅธ ํŒจํ„ด์— ๋น„ํ•ด.. 2021. 6. 3.
[iOS ๋ฉด์ ‘์งˆ๋ฌธ] ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์ด๋ž€? (Swift Singleton Pattern) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ ์ฃผ์ œ๋Š” ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์ฃผ์ œ์ด๋ฏ€๋กœ ๋ฐ”๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค~ Singleton "์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด์—์„œ ์‹ฑ๊ธ€ํ„ด ํŒจํ„ด์„ ๋”ฐ๋ฅด๋Š” ํด๋ž˜์Šค๋Š”, ์ƒ์„ฑ์ž๊ฐ€ ์—ฌ๋Ÿฌ ์ฐจ๋ก€ ํ˜ธ์ถœ๋˜๋”๋ผ๋„ ์‹ค์ œ๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด๋Š” ํ•˜๋‚˜์ด๊ณ  ์ตœ์ดˆ ์ƒ์„ฑ ์ดํ›„์— ํ˜ธ์ถœ๋œ ์ƒ์„ฑ์ž๋Š” ์ตœ์ดˆ์˜ ์ƒ์„ฑ์ž๊ฐ€ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ์ด์™€ ๊ฐ™์€ ๋””์ž์ธ ์œ ํ˜•์„ ์‹ฑ๊ธ€ํ„ด ํŒจํ„ด์ด๋ผ๊ณ  ํ•œ๋‹ค." - ์œ„ํ‚ค๋ฐฑ๊ณผ ๋ง ๊ทธ๋Œ€๋กœ ํด๋ž˜์Šค๊ฐ€ ์—ฌ๋Ÿฌ ์ฐจ๋ก€ ํ˜ธ์ถœ๋˜์–ด๋„ ๋”ฑ ํ•œ ๊ฐ์ฒด๋งŒ ์ƒ์„ฑ๋˜๋„๋ก ํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด์—์š”. ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ• ๊นŒ์š”? ์‰ฝ๊ฒŒ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด์„œ ์•Œ์•„๋ด…์‹œ๋‹ค. ์ž ์—ฌ๊ธฐ Foma ๋ผ๋Š” ์œ ์ €๊ฐ€ ์žˆ๊ณ  ๋กœ๊ทธ์ธ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ViewController1์—์„œ๋Š” Foma ์˜ ์ด๋ฆ„์ด ํ•„์š”ํ•˜๊ณ  ViewController2์—์„œ๋Š” Foma ์˜ ๋‚˜์ด๊ฐ€ ํ•„์š”ํ•ฉ.. 2020. 12. 11.
728x90
๋ฐ˜์‘ํ˜•