[RxSwift] RxSwift๋ฅผ ํด์ผํ๋ ์ด์
ํ์์ MVVMํจํด์ด๋ Rx์ ๊ด๋ จ๋ ๊ฒ๋ค์ด ๋ง์ด ๋ณด์๊ณ ๊ผญ ๋ฐฐ์์ผํ๋ค๋ ๋ง๋ค์ด ๋ง์์ต๋๋ค.
ํ์ง๋ง ์ ๋ฐฐ์์ผํ๋์ง์ ๋ํด์ ์์ง ๋ชปํ๋๋ฐ ์ด๋ฒ ๊ธฐํ์ ์ ํด์ผํ๋๊ฐ Rx๊ฐ ๋ฌด์์ธ๊ฐ์ ๋ํด์ ์ฐพ์๋ณด์์ต๋๋ค.
๋จผ์ ํด์ผํ๋ ์ด์ ๋ฅผ ์๊ธฐ์ ์ RxSwift๊ฐ ๋ฌด์์ธ์ง ์ฐพ์๋ณด์์ต๋๋ค.
RxSwift๋ Reactive eXtensions + Swift์ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด Rx๋ ๋ฌด์์ธ๊ฐ?
Rx๋ Reactive Programming ๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ๋์ด์๋ API์ ๋๋ค.
๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ณํํ ์ ์๋ ์ํ์ ์ฝ๊ฒ ๋์ฒํ ์ ์๊ณ ์ด๋ฒคํธ๋ค์ ์์,์ฌ์ฌ์ฉ์ฑ์ ํฅ์ ์ํฌ ์ ์์ต๋๋ค.
์ฆ, ๋น๋๊ธฐ์(์ฌ๋ฌ ์์ ์ ๋์์ ์งํ) ํ๋์ ์ฝ๊ณ ์์ ํ๊ฒ ๋ค๋ฃฐ ์ ์์ต๋๋ค.
๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ์ Functional Programming์ ํ์ฉํ๋๋ฐ ์ฌ๊ธฐ์
Functionanl Programming(ํจ์ํ ํ๋ก๊ทธ๋๋ฐ)์ด๋?
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ์ ํ์์ ์ํด์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ์ด ๋ฌด์์ด๋๋ฅผ ์ดํดํ๊ธฐ ์ํด์ ๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ์ ์ดํดํด์ผํ๋๋ฐ์.
๋ช ๋ นํ์ด๋?
๋ง์ฝ ์ด๋ค ์ฌ๋์๊ฒ ์ฌ๋ถ๋ฆ์ ์ํจ๋ค๋ฉด
์ง๊ธ ์ง๋ฐ์ผ๋ก ๋๊ฐ์ ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ
์ค๋ฅธ์ชฝ์ผ๋ก 100m ๊ฑท๊ณ ์ผ์ชฝ ๊ฑด๋ฌผ๋ก ๋ค์ด๊ฐ
์ผ์ชฝ ๊ฑด๋ฌผ์ ๋ฌธ์ ์ด์ด
์ผ์ชฝ ๊ฑด๋ฌผ๋ก ๋ค์ด๊ฐ
....
๋ฑ์ผ๋ก ์ด๋ ๊ฒ ํ๋ํ๋ ๋ช ๋ นํด์ผํ๋ ๊ฒ์ด ๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ์ ๋๋ค.
์ ์ธํ์ด๋?
๊ฑด๋ฌผ์ ๋๋ถ๋ถ ์ง๋ฐ์ ์์ด
๋ฌผ๊ฑด์ ์ฌ๋ ค๋ฉด ๋งํธ์ ๊ฐ์ผํด
๋งํธ๋ ๊ฑด๋ฌผ๋ก ๋์ด์์ด
๊ฑด๋ฌผ ์์ ๋ค์ด๊ฐ๋ ค๋ฉด ๋ฌธ์ ์ด์ด์ผํด
...
๋ฑ์ผ๋ก ๋ชฉํ๋ฅผ ์๋ ค์ฃผ์ง ์๊ณ ๋ช ์๋ง ํด์ฃผ๋ ๊ฒ์ด ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ์ ๋๋ค.
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ํน์ง์ ์์ํจ์(์ํ์ ๋ณํ๊ฐ ์๋๊ฒ)์ ์ต๋ช ํจ์(closure),๊ณ ์ฐจํจ์(map,reduce,filter)์ ๋๋ค.
์ฆ RxSwift๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ํ์ฉํ๋ ๋ฐ์ํํ๋ก๊ทธ๋๋ฐ API๊ฐ Swift์ ํฉ์ณ์ง ๊ฒ์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ RxSwift๋ฅผ ์์๋ณด์๋ค๋ฉด ์ฅ์ ์ ์์๋ณด๊ฒ ์ต๋๋ค.
1. ์ฝ๋๋ฅผ ์์ฃผ ๊น๋ํ๊ฒ ์ ๋ฆฌํ ์ ์๋ค.
2.๋น๋๊ธฐ ์์ ์ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๋ค.
3.Rx์ ๋ํ ์ดํด๋ก ๋ค๋ฅธ ์ง์์ ๊ฐ๋ฐ์์ ๋ ผ์ํ ์ ์๋ค.
์ด๋ ๊ฒ 3๊ฐ์ง๊ฐ ๊ฐ์ฅ ํฐ ์ฅ์ ์ผ๋ก ์๊ฐ๋ฉ๋๋ค.