๐ŸŽ iOS/Patterns & Arch

1. ๋ทฐ์ปจ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ๋ชจ๋ธ์„ ๋ทฐ๋ชจ๋ธ์ด ์†Œ์œ ํ•œ๋‹ค. (Output์ด๋‚˜ ๊ณ„์‚ฐ ์†์„ฑ, ํ•จ์ˆ˜ ๋“ฑ์œผ๋กœ)๊ฒฐ๊ตญ, ๋ทฐ์ปจ์€ ๋ทฐ๋ชจ๋ธ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ๋‹ค๊ฐ€ ๋ทฐ์ปจ์— ํ‘œ์‹œํ•ด์•ผํ•œ๋‹ค. ๋ทฐ์ปจ์€ ๋ทฐ๋ชจ๋ธ์„ ์†Œ์œ ํ•œ๋‹ค. ๋ทฐ์— ๋„์›Œ์•ผํ•  ์ •๋ณด๋ฅผ ๋ทฐ์ปจ์ด ๋ทฐ๋ชจ๋ธ์„ ๊ฑฐ์ณ ํ‘œ์‹œํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ.  2. ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๋ทฐ์— ๋ฒ„ํŠผ์ด ๋ˆŒ๋ฆฌ๋ฉด ๋ทฐ์ปจ์€ ๋ทฐ๋ชจ๋ธ์—๊ฒŒ ๋ฒ„ํŠผ์ด ๋ˆŒ๋ ธ๋‹ค๊ณ  ์•Œ๋ ค์ฃผ๋ฉด ๋œ๋‹ค. ์ด๋•Œ ๋ทฐ์—์„œ ๋ฒ„ํŠผ์ด ๋ˆŒ๋ ธ์„ ๋•Œ์˜ ๋™์ž‘์„ ํ•˜๋ฉด ๋œ๋‹ค. ๋ทฐ๋ชจ๋ธ์€ ๋ฒ„ํŠผ์ด ๋ˆŒ๋ฆฐ ์•ก์…˜์„ ๊ฐ€์ง€๊ณ  ๋ชจ๋ธ(๋ฐ์ดํ„ฐ)๋ฅผ ๋ณ€ํ™” ์‹œํ‚จ๋‹ค.   3. ๋ทฐ๋ชจ๋ธ์—์„œ ํด๋กœ์ € ๋“ฑ์„ ์‚ฌ์šฉํ•ด ๋ชจ๋ธ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๊ผˆ๋‹ค๊ณ  ์•Œ๋ ค์ค€๋‹ค. ๋ทฐ๋ชจ๋ธ์€ ๋ชจ๋ธ(๋ฐ์ดํ„ฐ)์™€ ๋กœ์ง์„ ๊ฐ–๋Š”๋‹ค. ๋ชจ๋ธ์—์„œ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ํด๋กœ์ €๋ฅผ ํ†ตํ•ด ๋ทฐ๋ชจ๋ธ์—์„œ ๋ทฐ๋กœ ์ „๋‹ฌ.   ๋ทฐ๋ชจ๋ธ์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๋ฐ˜์‘ํ˜•์œผ๋กœ ๋ทฐ์— ์ „๋‹ฌํ•  ์ˆ˜  ์žˆ๋‹ค. ..
๐Ÿ’ฌ  Introduction ํ…์ŠคํŠธํ•„๋“œ : ์œ ์ €๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ์„ ๋ฐ›๋Š”๋‹ค.  ์ž…๋ ฅ๋œ ๋™์ž‘๋“ค์„ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ์ „๋‹ฌํ•œ๋‹ค.์ด๋•Œ, ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ(๋Œ€๋ฆฌ์ž) ํŒจํ„ด์ด ํ•„์š”ํ•˜๋‹ค. ์ฆ‰, ํ…์ŠคํŠธ ํ•„๋“œ์˜ ๋Œ€๋ฆฌ์ž๋Š” ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋œ๋‹ค.  ํ…์ŠคํŠธํ•„๋“œ๋ผ๋Š” ๊ฐ์ฒด์™€ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋ผ๋Š” ๊ฐ์ฒด๊ฐ€ ์žˆ์„ ๋•Œํ…์ŠคํŠธํ•„๋“œ์™€ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์˜ ์˜์‚ฌ์†Œํ†ต์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ํŒจํ„ด์ด ์˜์‚ฌ์†Œํ†ต์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ค‘๊ฐ„์˜ ๋Œ€๋ฆฌ์ž(๋ธ๋ฆฌ๊ฒŒ์ดํŠธ)๋Š” ํ”„๋กœํ† ์ฝœ ํƒ€์ž…์œผ๋กœ ์„ค์ •ํ•˜๊ณ ํ”„๋กœํ† ์ฝœ ํƒ€์ž…์œผ๋กœ ๋™์ž‘์ด ์ „๋‹ฌ๋œ๋‹ค. ๊ฐ์ฒด ๋‚ด์—์„œ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ๋ฅผ ์„ค์ •ํ•œ๋‹ค๋ฉด self๋ผ๊ณ  ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์—†๋‹ค๋ฉด ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ๋ฅผ ์ง์ ‘์ ์œผ๋กœ ์„ค์ • ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํ…์ŠคํŠธ ํ•„๋“œ์˜ ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•ด์•ผ ํ•œ๋‹ค. ์ด ํ”„๋กœํ† ์ฝœ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์„ ํƒ์ ์ธ ์š”๊ตฌ์‚ฌํ•ญ๋“ค(๋ฉ”์„œ๋“œ)์„ ๊ตฌํ˜„ํ•˜๋ฉดํ…์ŠคํŠธํ•„๋“œ์—์„œ ๋ฐœ์ƒํ•œ ๋‚ด์šฉ๋“ค์„ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ์ „๋‹ฌํ•  ์ˆ˜ ..
๐Ÿ”Ž  1 . Model, View, ControllerModel๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(ํ™”๋ฉด๊ณผ ๊ด€๋ จ์ด ์—†๋Š” ๋กœ์ง๊ณผ ๋ฐ์ดํ„ฐ ๊ด€๋ จ)Model์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด Controller์— ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด KVO, Delegate ํŒจํ„ด, Notification Center ๋“ฑ์„ ์‚ฌ์šฉํ•œ๋‹ค.์˜ˆ๋ฅผ ๋“ค๋ฉด, ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ค๋Š” ํด๋ž˜์Šค๋‚˜ ๊ตฌ์กฐ์ฒด๊ฐ€ ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•œ๋‹ค.  view๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋ช…๋ น์„ ๋ฐ›์•„ UI ์š”์†Œ๋“ค์„ ์‚ฌ์šฉ์ž ํ™”๋ฉด ํ‘œ์‹œํ•˜๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๋‹ด๋‹น.view๋Š” Model์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ์—ญํ• ์ด๋‹ค.  Controller๋Š” View์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” action์— ๋Œ€ํ•œ target์„ ๋งŒ๋“ค์–ด๋‘”๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด View๋Š” ํ•ด๋‹น ์ด๋ฒคํŠธ๋ฅผ Controller์— ์ „๋‹ฌํ•œ๋‹ค.Vi..
๐Ÿ”Ž  1 . ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด ์œ ์ผํ•˜๊ฒŒ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์„ ๋•ŒํŠน์ • ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์•ฑ์ „์ฒด์—์„œ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๊ณ  ์•ฑ ์ „์—ญ์—์„œ ๋ชจ๋‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค.  1. ๊ฐœ๋ณ„์ ์ธ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Œ2. ๋‹จ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์žฌํ™œ์šฉํ•ด์„œ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ํ™œ์šฉํ•  ๋•Œ ์ ํ•ฉ.  ์œ„์น˜์„œ๋น„์Šค, ๋กœ๊น… ์„œ๋น„์Šค, UserDefaults ์ „์ฒด ๊ด€๋ฆฌ ํด๋ž˜์Šค, ๋„คํŠธ์›Œํฌ ์ค‘๋ณต ๋กœ์ง ๊ด€๋ฆฌ ํด๋ž˜์Šค ๋“ฑ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅ  static ํ‚ค์›Œ๋“œ๊ฐ€ ๋ถ™์œผ๋ฉด ์ œ์ผ ๋จผ์ € ํ˜ธ์ถœ๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ„๋‹ค. ์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด๊ฐ€ ๋ถˆ๋ฆฌ๊ณ  ๋‚œ ๋’ค ์•ฑ์ด ์ข…๋ฃŒ๋  ๋–„๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€ ์žˆ๋Š” ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์—ํ˜ธ์ถœํ•˜๋Š” ๋ชจ๋“  ๋ถ€๋ถ€์€ ๋‹จ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ”๋ผ๋ณด๊ณ  ์ ‘๊ทผํ•œ๋‹ค. ์ด๋•Œ, ๋ฉ”๋ชจ๋ฆฌ์ ์œผ๋กœ ์†ํ•ด๋ฅผ ๋ณด์ง€ ์•Š๋Š”์ง€ ๋ฐ˜๋“œ์‹œ ๊ณ ๋ คํ•ด๋ณผ ๊ฒƒ.   class S..
AHN.Jihyeon
'๐ŸŽ iOS/Patterns & Arch' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก