[RxSwift] RxSwift๋?
iOS ๊ฐ๋ฐ์๋ผ๋ฉด RxSwift์ ๋ํด ๋ค์ด๋ณธ ์ ์ด ์์ ๊ฒ์ ๋๋ค. RxSwift๋ Swift ์ธ์ด์ ๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋์ ํ๋ ๊ฐ๋ ฅํ ํ๋ ์์ํฌ์ ๋๋ค. ์ด๋ฒ ํฌ์คํธ์์๋ RxSwift์ ํต์ฌ ๊ฐ๋ ์ ์ค๋ช ํ๊ณ , iOS ๊ฐ๋ฐ์์ RxSwift๊ฐ ์ด๋ป๊ฒ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ ์ ์๋์ง์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
RxSwift๋?
RxSwift๋ ๋น๋๊ธฐ์ ์ด๊ณ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ ์ฝ๋๋ฅผ ๊ด์ฐฐ ๊ฐ๋ฅํ ์ํ์ค์ ํจ์ํ ์คํ์ผ์ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑํ ์ ์๊ฒ ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. RxSwift๋ ReactiveX (Reactive Extensions) ํจ๋ฐ๋ฆฌ์ ์ผ๋ถ๋ก, ๋น๋๊ธฐ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ๋ค๋ฃจ๊ธฐ ์ํ ์ธ๊ธฐ ์๋ ํจ๋ฌ๋ค์์ ๋๋ค.
์ฃผ์ ๊ฐ๋
- Observable
- RxSwift์ ํต์ฌ ๋จ์์ ๋๋ค.
- Observable์ ์๊ฐ์ ๋ฐ๋ผ ์ด๋ฒคํธ๋ฅผ ๋ฐฉ์ถํ๋ฉฐ, ์ด ์ด๋ฒคํธ๋ ๊ฐ๋จํ ๋ฐ์ดํฐ์์ ๋ณต์กํ ๋น๋๊ธฐ ์์ ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ์ ์์ต๋๋ค.
- Observer
- RxSwift์ ํต์ฌ ๋จ์์ ๋๋ค.
- Observable์ ์๊ฐ์ ๋ฐ๋ผ ์ด๋ฒคํธ๋ฅผ ๋ฐฉ์ถํ๋ฉฐ, ์ด ์ด๋ฒคํธ๋ ๊ฐ๋จํ ๋ฐ์ดํฐ์์ ๋ณต์กํ ๋น๋๊ธฐ ์์ ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ์ ์์ต๋๋ค.
- Operators
- Observable์ด ๋ฐฉ์ถํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๊ณ ๊ฒฐํฉํ๋ฉฐ ์์ ํ ์ ์๊ฒ ํด์ฃผ๋ ํจ์๋ค์ ๋๋ค.
- ์ ์ธ์ ๋ฐฉ์์ผ๋ก ๊ฐ๋ ฅํ ๋ฐ์ดํฐ ์กฐ์์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- Schedulers
- ์ค๋ ๋ฉ ๋ฌธ์ ๋ฅผ ์ถ์ํํ์ฌ ์ฝ๋๊ฐ ์คํ๋์ด์ผ ํ ์์น๋ฅผ ์ง์ ํ ์ ์๊ฒ ํด ์ค๋๋ค.
- ์๋ฅผ ๋ค์ด ๋ฉ์ธ ์ค๋ ๋, ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋ ๋ฑ์ ์ง์ ํ ์ ์์ต๋๋ค.
RxSwift๋ฅผ ์ฌ์ฉํ๋ ์ด์
์ ์ธ์ ์ฝ๋
RxSwift๋ ์ ์ธ์ ํ๋ก๊ทธ๋๋ฐ ์คํ์ผ์ ์ฅ๋ คํฉ๋๋ค. ์ด๋ ์ฝ๋๊ฐ ๋ฌด์์ ํด์ผ ํ๋์ง๋ฅผ ์ค๋ช ํ ์ ์๊ฒ ํด ์ฃผ๋ฉฐ, ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ฌ์ค๋๋ค.
๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ
๋คํธ์ํฌ ์์ฒญ, ์ฌ์ฉ์ ์ ๋ ฅ ๋ฑ ๋น๋๊ธฐ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ด RxSwift๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋จํด์ง๋๋ค. RxSwift๋ ๋ชจ๋ ์ข ๋ฅ์ ๋น๋๊ธฐ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ๋ค๋ฃจ๊ธฐ ์ํ ํต์ผ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
์กฐํฉ์ฑ
RxSwift์ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์ฝ๊ฒ ์กฐํฉํ๊ณ ๋ณํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ณต์กํ ์์ ์ ๋ ์์, ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ๋ก ๋ถํดํ ์ ์์ต๋๋ค.