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๋ฅผ ๊ฐ์งํด ์ฒ๋ฆฌํ๋๋ก ๊ตฌํํ์์ต๋๋ค.