Combine - boostcampwm-2021/iOS04-OwnMyWay GitHub Wiki

Combine

์™œ ์‚ฌ์šฉํ–ˆ๋‚˜์š”?

  • Swift๋Š” Notification Center, escaping closure, GCD ๋“ฑ ๋‹ค์–‘ํ•œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ API๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ๋‹ค์–‘ํ•œ API๋ฅผ ์ด๊ณณ์ €๊ณณ์— ์‚ฌ์šฉํ•˜๋ฉด ๋””๋ฒ„๊น… ๊ณผ์ •์—์„œ์˜ ์ถ”์ ๊ณผ ์ˆ˜์ •์ด ์–ด๋ ค์›Œ์ง„๋‹ค๋Š” ๋‹จ์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
  • Combine์€ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ publisher๋ผ๋Š” ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์žฌ์‚ฌ์šฉ์ด ํŽธ๋ฆฌํ•˜๊ณ  ์ฝ”๋“œ์˜ ๊ตฌ์กฐ๋„ ๊น”๋”ํ•ด์ง„๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ๋˜ํ•œ Combine์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐœํ–‰์ž๊ฐ€ ๊ตฌ๋…์ž๋ฅผ ๋ชจ๋ฅด๊ฒŒ ํ•˜์—ฌ ์˜์กด์„ฑ์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Reactive ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ๋‹ค๋ฅธ framework๋“ค๋„ ๊ณ ๋ฏผํ•˜์˜€์ง€๋งŒ Combine์ด built-in-framework์ด๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ ๋ฉด์—์„œ ์ข‹๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.


Combine

์–ด๋–ป๊ฒŒ ์ ์šฉํ–ˆ๋‚˜์š”?

  • ๋ณ€ํ™”๋ฅผ ๋ฐœํ–‰ํ•˜๊ธฐ ์›ํ•˜๋Š” ์†์„ฑ์— @Published PropertyWrapper๋ฅผ ์ด์šฉํ•˜์—ฌ Publisher๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ViewModel์—์„œ ๋ณ€ํ™”๊ฐ€ ๊ฐ์ง€๋˜๊ธฐ ์›ํ•˜๋Š” ์†์„ฑ์„ Publisher๋กœ ๋งŒ๋“ค๊ณ  ViewController์—์„œ ํ•ด๋‹น ๋ณ€ํ™” sinkํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ๊ฐ์ง€ํ•˜๊ณ  ์›ํ•˜๋Š” ๋™์ž‘์„ ํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐ ViewModel์— Errorํ”„๋กœํผํ‹ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  Publisher๋กœ ๋งŒ๋“ค์–ด Error ๋ฐœ์ƒ ์‹œ ViewController์—์„œ Error๋ฅผ ๊ฐ์ง€ํ•ด ์ฒ˜๋ฆฌํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
โš ๏ธ **GitHub.com Fallback** โš ๏ธ