๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“Œ Language/Swift

[RxCocoa] Relay๋ž€?

by Fomagran ๐Ÿ’ป 2021. 2. 3.
728x90
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š” 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์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋Š”๋ฐ์š”.

 

ํ˜น์‹œ ํ‹€๋ฆฐ ๋ถ€๋ถ„์ด ์žˆ๊ฑฐ๋‚˜ ์ง€์ ํ•ด์ฃผ์‹ค ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“  ๋Œ“๊ธ€๋กœ ๋‹ฌ์•„์ฃผ์„ธ์š”~~

 

๋˜ ๊ถ๊ธˆํ•˜์‹  ์‚ฌํ•ญ์žˆ์œผ์‹œ๋ฉด ์–ธ์ œ๋“  ๋Œ“๊ธ€ ๋‹ฌ์•„์ฃผ์„ธ์š”!!

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€