suvera-dev ๐Ÿฅฆ

RxSwift) subscribe, bind, drive ์ฐจ์ด ๋ณธ๋ฌธ

Language/RxSwift

RxSwift) subscribe, bind, drive ์ฐจ์ด

suvera 2022. 4. 14. 08:45

 

RxSwift ์—์„œ ๊ตฌ๋…์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์„œ๋“œ 3๊ฐ€์ง€ !

์›๋ž˜๋Š” subscribe ๋งŒ ์•Œ๊ณ ์žˆ์—ˆ๊ณ , UI ์ž‘์—…ํ•ด์ค„๋•Œ bind ๋งŒ ์ผ๋Š”๋ฐ ..

์ฐจ์ด๋ฅผ ์ž˜ ๋ชจ๋ฅด๊ณ  ๊ทธ๋ƒฅ ์“ด ๊ฒƒ ๊ฐ™๋‹ค ใ…‹ใ…‹

 


 

subscribe๋Š” ๋ง๊ทธ๋Œ€๋กœ ๊ตฌ๋…ํ•˜๋Š”๊ฑฐ

๊ตฌ๋…๋Œ€์ƒ์˜ ์ƒํƒœ๊ฐ€ ๋ณ€ํ•˜๋ฉด ๊ฐ’์„ ๋ฐ›์•„์™€์„œ ์ฒ˜๋ฆฌ

๋ณ€ํ•˜๋Š” ๋‹ค์Œ๊ฐ’, ์—๋Ÿฌ, ๋๋‚  ๋•Œ๋ฅผ ์•Œ๊ณ  ์ฝ”๋“œ ๊ตฌํ˜„ ๊ฐ€๋Šฅ.

 

UI ์ž‘์—…์— ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์„œ๋“œ๋Š” bind ์™€ drive 


 

bind๋Š” Observable๊ณผ Observer๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด์ฃผ๋Š” ์—ญํ• 

- bind์˜ ๋‚ด๋ถ€์—๋Š” subscribe ๊ฐ€ ์žˆ์Œ 

- ์˜ต์ €๋ฒ„๋ธ”์ด ๋ฐฉ์ถœํ•œ ์ด๋ฒคํŠธ๋ฅผ ๊ทธ๋Œ€๋กœ binder์—๊ฒŒ ์ „๋‹ฌ

๊ทธ๋ฆฌ๊ณ  binder๋Š” UI ์—…๋ฐ์ดํŠธ์— ์‚ฌ์šฉ๋˜๋Š” ์˜ต์ €๋ฒ„์˜ ์ผ์ข…

- bind๋Š” onNext ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด์„œ๋งŒ ๋ฐ˜์‘ํ•˜๊ณ 

error์ด๋ฒคํŠธ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์—๋Ÿฌ ๋กœ๊ทธ๋ฅผ ์ฝ˜์†”์— ์ถœ๋ ฅ

- ๋‹จ์ˆœํžˆ ์ƒˆ๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ฐ’์„ ๋„˜๊ฒจ์ค„ ๋•Œ ๊ฐ„ํŽธํ•˜๊ฒŒ ์“ฐ๋Š” ์šฉ๋„

 

 

drive๋Š” bind ์ฒ˜๋Ÿผ onNext ์ด๋ฒคํŠธ ๋Œ€ํ•ด์„œ๋งŒ ์ฒ˜๋ฆฌ 

- drive๋„ ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” subscribe๋ฅผ ์‚ฌ์šฉ

- ์šฐ์„  ๋ฌด์กฐ๊ฑด ๋ฉ”์ธ์Šค์ผ€์ค„๋Ÿฌ, ์ฆ‰ ๋ฉ”์ธ์Šค๋ ˆ๋“œ์—์„œ ๋™์ž‘

- drive๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” asDriver๋กœ ์˜ต์ €๋ฒ„๋ธ”์— drive trait ๋ถ€์—ฌ

- ์• ์ดˆ์— ์ปจํŠธ๋กค ํ”„๋กœํผํ‹ฐ๋Š” ์‹คํŒจํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์—๋Ÿฌ๋ฅผ ๊ฐ€์ •ํ•˜์ง€ ์•Š์Œ

 


drive๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ BehaviorRelay ํ˜•ํƒœ์—ฌ์•ผํ•ฉ๋‹ˆ๋‹ค..?

๋ฌผ๋ก  BehaviorSubject๋ฅผ wrappingํ•œ ํ˜•ํƒœ๋ผ์„œ ์„œ๋ธŒ์ ํŠธ๋„ asDriver๊ฐ€ ์žˆ๊ธดํ•ด์š”

๊ทผ๋ฐ ์„œ๋ธŒ์ ํŠธ๋Š” ์—๋Ÿฌ๊ฐ€ ๋‚  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 

์—๋Ÿฌ๊ฐ€ ์—†๋Š” driverํ˜•ํƒœ์™€ ๋งž์ง€ ์•Š์Œ .. 

 

 


 

 

Relay + drive ์‚ฌ์šฉ : UI ์ž‘์—…์ด๋ผ๋Š” ๊ฒƒ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•ด์คŒ

Relay ๋ฅผ Subject๋ฅผ wrapping ํ•œ ํด๋ž˜์Šค 

complete์™€ error๋ฅผ ๋ฐฉ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค. 

accept๋กœ ์ด๋ฒคํŠธ ๋ฐ›์Œ

 

driver๋Š” ๋ฉ”์ธ์Šค๋ ˆ๋“œ์—์„œ๋งŒ ์‹คํ–‰ 

UI ์—…๋ฐ์ดํŠธ๋Š” ๋ฉ”์ธ์Šค๋ ˆ๋“œ์—์„œ๋งŒ ์‹คํ–‰๋˜์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— 

subscribe์™€ bind๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์•ˆ์ „. !

 

๋˜, bind๋Š” ์˜ต์ €๋ฒ„๊ฐ€ ๋Š˜์–ด๋‚ ๋•Œ๋งˆ๋‹ค ์˜ต์ €๋ฒ„๋ธ” ์ŠคํŠธ๋ฆผ์ด ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ 

๋˜๋Š”๋ฐ drive๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ŠคํŠธ๋ฆผ์€ ํ•˜๋‚˜๋กœ ์œ ์ง€๋˜๊ณ  ๊ทธ ํ•˜๋‚˜๋ฅผ ์—ฌ๋Ÿฌ ์˜ต์ €๋ฒ„๊ฐ€ ๊ตฌ๋… 

=> ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋ฉด์—์„œ ํšจ์œจ์ 

 

 

 


 

UI ๊ด€๋ จ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋• Relay + drive ์กฐํ•ฉ

๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ €์žฅํ•  ๋•Œ bind , Subscribe + Subject ์กฐํ•ฉ

 

 

 

์ถœ์ฒ˜ : SOPT 30๊ธฐ iOS ํŒŒํŠธ ์ค€ํŠ€๊น€๋‹˜ ์ž๋ฃŒ

Comments