์ฝ”๋””๋„ค์ดํ„ฐ ํŒจํ„ด
ยท
๐ŸŽ iOS/๋””์ž์ธํŒจํ„ด
Coordinator Pattern ViewController๊ฐ€ ๋ณด์œ ํ•œ ์ฑ…์ž„ ์ค‘ Navigation๊ณผ ๊ด€๋ จ๋œ ๋ถ€๋ถ„์„ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค์—์„œ ์ฑ…์ž„์ง€๋„๋ก ํ•˜๋Š” ํŒจํ„ด ๊ธฐ์กด์˜ ViewController์—์„œ ์ง์ ‘์ ์œผ๋กœ ํ™”๋ฉด์ „ํ™˜์„ ์‹œํ–‰ํ•˜๋Š” ๋ฐฉ์‹์€ ๋‹ค์Œ์— ๋„์›Œ์งˆ ๋‹ค๋ฅธ ViewController์— ๋Œ€ํ•ด ๊ธฐ์กด ViewController๊ฐ€ ์•Œ๊ณ  ์žˆ์–ด์•ผํ•˜๋Š” ๊ตฌ์กฐ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ViewController ์ธ์Šคํ„ด์Šค ๊ฐ„์— ์‹ฌํ•œ ์ปคํ”Œ๋ง์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. (์ปคํ”Œ๋ง: ๋‘ ์š”์†Œ๊ฐ„์˜ ์ƒํ˜ธ์˜์กด์„ฑ) ์ด๋ฅผ ํ•ด๊ฒฐํ•œ ๊ฒƒ์ด Coordinator ํŒจํ„ด์ด๋‹ค. ๋ชจ๋“  VIewController๋Š” Coordinator ์ธ์Šคํ„ด์Šค๋งŒ ๋ณด์œ ํ•  ๋ฟ, ๋‹ค๋ฅธ ViewController์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ง์ ‘์ ์œผ๋กœ ๋ณด์œ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ์ € Coordinator์— ์š”์ฒญํ•  ๋ฟ์ด๋‹ค. ์ด๋Ÿฐ ..
Clean Architecture
ยท
๐ŸŽ iOS/๋””์ž์ธํŒจํ„ด
Clean Architecture ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์„ ํŠน์ • ๋ชฉ์ ๊ณผ ์ฑ…์ž„์„ ๊ฐ€์ง„ ๊ณ„์ธต์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๋””์ž์ธ ์ ‘๊ทผ๋ฐฉ์‹ ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์˜ ์ฃผ์š” ๋ชฉํ‘œ๋Š” ๊ฐ ๊ณ„์ธต์„ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœ, ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋„๋กํ•˜์—ฌ ์œ ์—ฐํ•˜๊ณ  ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•œ ์‹œ์Šคํ…œ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. ์™ผ์ชฝ์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณด๋ฉด ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ ˆ์ด์–ด๋“ค์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ทธ๋ž˜ํ”„์—์„œ ํ•ต์‹ฌ์€ ์•ˆ์ชฝ ๋ ˆ์ด์–ด๋“ค์€ ๋ฐ”๊นฅ ๋ ˆ์ด์–ด์— ์žˆ๋Š” ๊ฒƒ๋“ค์„ ๋ชฐ๋ผ์•ผ ํ•œ๋‹ค. ์ฆ‰ ์•ˆ์ชฝ ๋ ˆ์ด์–ด์—์„œ ๋ฐ”๊นฅ ์ชฝ์— ์˜์กดํ•˜์ง€ ๋ง์•„์•ผํ•œ๋‹ค.๋Š” ๊ฒƒ์ด๋‹ค. ๋‹ค์‹œ๋งํ•˜๋ฉด, ๋ฐ”๊นฅ์ชฝ ๋ ˆ์ด์–ด์˜ ๊ฐ์ฒด๋ฅผ ๋‚ด๋ถ€์—์„œ ์ƒ์„ฑํ•˜๋ฉด ์•ˆ๋œ๋‹ค๋Š” ๋ง์ด๋‹ค. ๊ทธ๋ž˜์„œ Dependency Rule ํ™”์‚ดํ‘œ๊ฐ€ ์•ˆ์ชฝ์„ ํ–ฅํ•˜๊ณ  ์žˆ๋‹ค. ์•ˆ์ชฝ ๋ ˆ์ด์–ด์— ์˜์กดํ•ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋‹ค. Layers ์ด๋ ‡๊ฒŒ ๋ ˆ์ด์–ด๋ฅผ ๋‚˜๋ˆด๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ๊ทธ๋ฃน์„ ์ง€์„ ์ˆ˜ ์žˆ๋‹ค...
๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ํŒจํ„ด
ยท
๐ŸŽ iOS/๋””์ž์ธํŒจํ„ด
๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ํŒจํ„ด ๊ฐ์ฒด๊ฐ€ ์ž์‹ ์˜ ์ฑ…์ž„์„ ๋‹ค๋ฅธ ๊ฐ์ฒด์—๊ฒŒ ์œ„์ž„(Delegate)ํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ํŒจํ„ด์€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ์ฒด๊ฐ€ ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ์†Œํ†ตํ•˜๋„๋ก ๋„์™€์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์˜ˆ์ œ import UIKit protocol ๋ญ”๊ฐ€์‹œํ‚ค๋Š”๋ธ๋ฆฌ๊ฒŒ์ดํŠธ { func ํ•จ์ˆ˜A() } class ClassA { var delegate: ๋ญ”๊ฐ€์‹œํ‚ค๋Š”๋ธ๋ฆฌ๊ฒŒ์ดํŠธ? func A์˜ํ•จ์ˆ˜() { delegate?.ํ•จ์ˆ˜A() } } class ClassB: ๋ญ”๊ฐ€์‹œํ‚ค๋Š”๋ธ๋ฆฌ๊ฒŒ์ดํŠธ { // ClassB๋Š” ๋ญ”๊ฐ€์‹œํ‚ค๋Š”๋ธ๋ฆฌ๊ฒŒ์ดํŠธ๋ฅผ ์ฑ„ํƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜A()๋ฅผ ๊ตฌํ˜„ํ•ด์•ผํ•œ๋‹ค. func ํ•จ์ˆ˜A() { print("ํ•จ์ˆ˜A๊ฐ€ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.") } } let classA = ClassA() let classB = ClassB() classA.delegate = ..
JerryiOS
'๐ŸŽ iOS/๋””์ž์ธํŒจํ„ด' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก