์๋ ํ์ธ์ Foma ์ ๋๋ค!
์ค๋ ์์๋ณผ๊ฑด RxCocoa์์ ์ ๊ณตํ๋ Relay๋ผ๋ ๋ ์์ ๋๋ค.
์ฐ์ Relay๋ฅผ ์ฌ์ ์ ๊ฒ์ํด๋ณด๋ ์คํ์ฉ ์ค๊ณ ๋ ํต์ ์์ฑ? ์ด๋ผ๊ณ ๋ ์ ๋นํฉํ๋๋ฐ...
๋ค๋ฅธ ๋ป์ ๋ณด๋ ์ ๋ฌํ๋ค,์ค๊ณํ๋ค๋ผ๋ ๋ป์ด ์๋๋ผ๊ตฌ์!
๊ทธ๋์ ์ ๋ฌด์์ธ๊ฐ ์ ๋ฌํ๋ ๋ ์์ธ๊ฐ? ๋ผ๋ ์๊ฐ์ ํ์์ด์!
๊ทธ๋ผ ๋ณธ๊ฒฉ์ ์ผ๋ก Relay ๊ฐ ์ด๋ค ๋ ์์ธ์ง ์์๋ณด๊ฒ ์ต๋๋ค~
Relay
์ฐ์ ์ ์ผ ๋จผ์ Relay๋ RxSwift์์ ์ ๊ณตํ๋ ๊ฒ์ด ์๋๋ผ RxCocoa์์ ์ ๊ณตํฉ๋๋ค.
์ RxCocoa์์ ์ ๊ณต๋ ๊น์?
๋ฐ๋ก Relay๋ฅผ ์ด์ฉํ๋ฉด UI ์ด๋ฒคํธ๋ฅผ ์ฝ๊ฒ ๊ตฌํํ๊ณ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค!
์ฐ์ ๊ฐ๋จํ๊ฒ ์๋ฅผ ๋ค์ด๋ณด์๋ฉด ๋ง์ฝ์ ํ ์คํธํ๋์์ ์ด ๊ธ์ ๋ฐฉ์ถํ๊ณ ๊ทธ ์ ๋ณด๋ฅผ ๊ตฌ๋ ํ๋ ์๋ธ์ ํธ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ ๊ฒ์
(์๋ธ์ ํธ๊ฐ ๋ญ์ง ๋ชจ๋ฅด์๋ ๋ถ๋ค์ ์ฌ๊ธฐ ์์ ๋จผ์ ๋ณด์๊ณ ์ค๋ฉด ์ข์๊ฑฐ ๊ฐ์์!)
๋ง์ฝ์ ์ฌ๊ธฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์ปดํ๋ฆฟ์ ํ์๋ ์ด๋ป๊ฒ ๋ ๊น์?
๊ทธ๋๋ก ๊ตฌ๋ ์ด ๋๋๊ฒ ๋๊ณ ๊ทธ ๋ค์ ๋ฐ์ดํฐ๋ ๋ฐฉ์ถํ์ง ๋ชปํ๊ฒ ๋ฉ๋๋ค.
๋ง์ฝ ์ค์ ์ฑ์์ ์ด๋ฐ ์ผ์ด ์ผ์ด๋๋ค๋ฉด ๋ง๋ ์๋๋ ์ํฉ์ด๊ฒ ์ฃ ?
ํ ์คํธํ๋์ ์ด๋ค ๊ฐ์ ๋ฃ์๋๋ฐ ๊ฐ์ด ์ ๋ฌ๋์ง๊ฐ ์๋......
๋ฐ๋ก ์ด๋ด๋ Relay๊ฐ ์ฌ์ฉ๋๋๊ฒ๋๋ค!!
Relay๋ onError,onCompleted๋ฅผ ํ ์ ์๊ณ onDispose์๋ง ์๋์ด ๋๋๊ฒ ๋ฉ๋๋ค.
์ฆ, ๋ฉ์ถ๋ฉด ์๋๋ UI ์ด๋ฒคํธ์ ์ฌ์ฉํ๊ธฐ ์ ์ ํ ๊ฒ์ด์ฃ !
์๋ธ์ ํธ๋ก ๊ตฌํํ๋ ์์๋ฅผ Relay๋ก ๋ฐ๊ฟ๋ณธ๊ฑด๋ฐ ๋ญ๊ฐ ๋ค๋ฅธ ๋ถ๋ถ์ด ์์ฃ ?
์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐฉ์ถํ ๋ onNext์ธ๋ฐ... accept๋ ๋ญ์ง...?
์ด๋ฒ์๋ ์ฌ์ ์ ๋ป์ ๊ฒ์ํด๋ณด๋ ๋ฐ์๋ค์ด๋ค,์ธ์ ํ๋ค ๋ผ๋ ๋ป์ด๋ค์.
์๋ง๋ relay๋ ์๋ฌ๋ ์๋ฃ๋ฅผ ๋ฐฉ์ถํ์ง ๋ชปํ๋ฏ๋ก ๊ทธ๋ฅ ๋ฐ์๋ค์ฌ!! ์ด๋ฐ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐฉ์ถํ๋๊ฒ์ด๋ผ๊ณ ์ถ์ธกํด๋ด ๋๋ค...ใ
๊ทธ๋ฆฌ๊ณ Relay๋ฅผ ์ฌ์ฉํ๋ฉด ์ข์ ์ด์ ๊ฐ ํ๊ฐ์ง ๋ ์๊ฐํด๋๋ฆด๊ฒ์.
๋ง์ฝ ๋ฐฐ์ด์ ๊ฐ์ง๋ BehaviorSubject๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด ์ด ๋ฐฐ์ด ์์ ๊ฐ์ ์ถ๊ฐํด์ฃผ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์?
๋ค์๊ณผ ๊ฐ์ด subject์ value๋ฅผ ๋ง๋ ๋ค try catch๊ตฌ๋ฌธ์ ์ฌ์ฉํด์ ์ด value์ ์ถ๊ฐํด์ฃผ์ด์ผ ํฉ๋๋ค.
ํ์ง๋ง BehaviorRelay๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? (BehaviorRelay๋ Variable์ ๋์ฒดํด์ ๋์จ๊ฒ์ ๋๋ค.)
๋ค์๊ณผ ๊ฐ์ด try catch ๊ตฌ๋ฌธ์์ด acceptํ ๋ value์ ๊ฐ์ ์ถ๊ฐํด์ฃผ๊ฑฐ๋
์ผ๋ฐ ๋ฐฐ์ด์์ ๊ฐ์ ๋ฃ๋๊ฒ์ฒ๋ผ append๋ฅผ ์ฌ์ฉํด์ ๊ฐ๋จํ๊ฒ ๊ฐ์ ๋ฃ์ด์ค ์ ์์ต๋๋ค.
์ค๋์ ์ด๋ ๊ฒ Relay์ ๋ํด์ ์์๋ณด์๋๋ฐ์.
ํน์ ํ๋ฆฐ ๋ถ๋ถ์ด ์๊ฑฐ๋ ์ง์ ํด์ฃผ์ค ๋ถ๋ถ์ด ์๋ค๋ฉด ์ธ์ ๋ ๋๊ธ๋ก ๋ฌ์์ฃผ์ธ์~~
๋ ๊ถ๊ธํ์ ์ฌํญ์์ผ์๋ฉด ์ธ์ ๋ ๋๊ธ ๋ฌ์์ฃผ์ธ์!!
๋๊ธ