์๋ ์คํ ๋ธ์บ ํ ์ฌ์ ๊ณผ์ ๋ก ๋ธ๋ก๊ทธ ๊ฐ๋ฐ์ ํ๋ฉด์ ๊นจ๋ฌ์ ์ ์ด ์ ์ฐํ์ง ๋ชปํ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ฐ๋ก ์ธํด ์ ์ ์คํ๊ฒํฐ ์ฝ๋๊ฐ ๋๋ ์ ์ด ์์ฌ์ ์๋ค.
๊ทธ๋์ ์ด๋ฒ ๊ฒ์ค๋ฏธ iOS์ฑ์ RxSwift๋ฅผ ์ ์ฉํ์ฌ ํด๋ฆฐ ์ฝ๋๋ฅผ ์งํฅํ๊ณ ์ ํ์์ผ๋, ์ ํฌ๋ธ ๊ณฐํ๊น ์์ ํ๋๋ง ๋ณด๊ณ ์์ ์ง์์ผ๋ก ์ค์ ์ ์ ์ฉํ๋ ค๋ ์ด๋ ค์์ ๊น์ ์ดํด ๊ธฐ๋ฐ ๋์ ์๋ฆฌ ๋ฐ ํน์ง์ ์ ํ์ ํ๊ณ ํ์ฉํ๊ณ ์ ๊ฐ๋ ์ ๋ฆฌ๋ฅผ ๋ค์ด๊ฐ๊ณ ์ ํ๋ค!
์ดํ์ ๋ด๊ฐ RxSwift๋ก ์ง๋ฉดํ ๊ธฐ์ ์ ์ด๋ ค์์ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง๋ ํฌ์คํ ํ ๊บผ๋ค~!
1๏ธโฃ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ(Reactive Programming)์ด๋?
๊ธฐ์กด์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ ์ปดํจํฐ ํ๋์จ์ด์๊ฒ ๋ฌด์์ธ๊ฐ๋ฅผ ์ฒ๋ฆฌํด๋ฌ๋ผ๋ ๋ช ๋ น์ ํ๋ ๋ฐฉ์์ด์๊ณ , ๊ทธ ๋ช ๋ น๋ค์ ์ด๋ ํ ์ ์ฐจ์ ๋ฐ๋ผ ์์๋๋ก ์งํ๋๋ค.
ํ์ง๋ง Reactive Programming์ ๋ค๋ฅธ ๋ฐฉ์!
Reactive Programming์ ๋ช ๋ น๋ค์ด ์คํ๋๋ ์ ์ฐจ ์ค์ฌ์ด ์๋ ๋ฐ์ดํฐ ํ๋ฆ ์ค์ฌ์ผ๋ก ์งํ๋๋ค.
- ๋ฐ์ดํฐ ํ๋ฆ ์ ์ -> ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ ๊ด๋ จ ๋ช ๋ น์ด ๋๋ ํจ์ ์คํ
๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์๋ค๋ ๊ฒ์ ์์คํ ์ ์ด๋ค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค๋ ๊ฒ๊ณผ ๊ฐ๋ค๊ณ ๋ณผ ์ ์๋ค.
์ฆ, ์ด๋ค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ํ์ํ ์์ ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด ๊ธฐ๋ณธ ๋ฐฉ์
๋ฐ๋ผ์ Reactive ํ๋ก๊ทธ๋จ์ โ์ฃผ๋ณ ํ๊ฒฝ๊ณผ ๋์์์ด ์ํธ์์ฉ์ ํ๋ฉด์ ํ๋ก๊ทธ๋จ์ด ์ฃผ๋ํ๋ ๊ฒ์ด ์๋ ํ๊ฒฝ์ด ์ฃผ๋ํ๊ณ ํ๊ฒฝ์ ์ํ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ ๋์ํ๋ ํ๋ก๊ทธ๋จโ์ด๋ค.
2๏ธโฃ RxSwift๋?
RxSwift๋ Rx + Swift๋ก ์ด๋ฃจ์ด์ง ํฉ์ฑ์ธ๋ฐ, ์ฌ๊ธฐ์ Rx๋ ReactiveX์ด๊ณ ์ด๊ฒ ๋ญ์ง ์๋ฉด RxSwift์ ๋ํด์๋ ๊ฐ์ด ์กํ ๊ฒ์ด๋ค. ๊ทธ๋์ ๊ทธ๊ฒ ๋ญ๋๋ฉด,,,
ReactiveX๋?
ReactiveX๋ Reacitve eXtensions์ ์ค์๋ง!
ReactiveX ์น์ฌ์ดํธ ์ ์๊ฐ๊ธ์ ๋ณด๋ฉด
ReactiveX is a library for composing asynchronous and event-based programs by using observable sequences.
It extends the observer pattern to support sequences of data and/or events and adds operators that allow you to compose sequences together declaratively while abstracting away concerns about things like low-level threading, synchronization, thread-safety, concurrent data structures, and non-blocking I/O.
...
Why Use Observables?
..
ReactiveX๋ ๊ด์ฐฐ ๊ฐ๋ฅํ ์ํ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ์ ๋ฐ ์ด๋ฒคํธ ๊ธฐ๋ฐ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ณ
์ต์ ๋ฒ ํจํด์ ํ์ฅํ์ฌ ๋ฐ์ดํฐ ๋๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํ์ค๋ฅผ ์ง์ํ๊ณ ์ฌ๋ฌ ๊ฐ์ง ๊ธฐ๋ฅ ๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ฃผ๋ ์คํผ๋ ์ดํฐ๋ฅผ ์ง์ํด์ค๋ค๊ณ ํ๋ค.
์ด๋ ๋ค์ํ ์ธ์ด๋ก ํ์ฅํ์ฌ ๋น๋๊ธฐ๋ก ์ด๋ฒคํธ ๊ธฐ๋ฐ์ ํ๋ก๊ทธ๋๋ฐ์ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋ ค๊ณ ๋ง๋ค์ด์ง ๊ฒ!
๊ทธ๋ ๋ค๋ฉด RxSwift๋?
RxSwift is a library for composing asynchronous and event-based code by using observable sequences and functional style operators, allowing for parameterized execution via schedulers.
- RxSwift๋ ์ต์ ๋ฒ๋ธ ์ํ์ค์ ํจ์ ์คํ์ผ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ ๋ฐ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ๋๋ก ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์ค์ผ์ค๋ฌ๋ฅผ ํตํด์ ๋งค๊ฐ๋ณ์ํ ๋ ์คํ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
- ๋น๋๊ธฐ ๊ฐ์ ์ ํธ๋ฆฌํฐํ๊ฒ ๋ฆฌํด๊ฐ์ ์ ๋ฌํ๊ฒ ํด์ค. (๋น๋๊ธฐ๋ฅผ completion์์ด ์ด์ฉ ๊ฐ๋ฅ!)
- ๋ณธ์ง์ ์ผ๋ก ์๋ก์ด ๋ฐ์ดํฐ์ ๋ฐ์ํ๊ณ ์์ฐจ์ ์ผ๋ก ๊ฒฉ๋ฆฌ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋๋ก ํ์ฌ ๋น๋๊ธฐ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์ ๋จ์ํ ํ๋ค.
๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ๊ณผ RxSwift์ ๋ํด ๊ฐ๋ตํ ์์๋ดค์ผ๋, ๋ค์ ํธ์์๋ ๋ ์์ธํ๊ฒ RxSwift๋ฅผ ํ๋ณด๋๊ฑธ๋ก!