๐Ÿ“Œ Language/Swift

[RxSwift] RxSwift๋ฅผ ํ•ด์•ผํ•˜๋Š” ์ด์œ 

Fomagran ๐Ÿ’ป 2020. 9. 3. 10:26
728x90
๋ฐ˜์‘ํ˜•

 

 

ํ‰์†Œ์— 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๊ฐ€์ง€๊ฐ€ ๊ฐ€์žฅ ํฐ ์žฅ์ ์œผ๋กœ ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค.

 

 

ReactiveX/RxSwift

Reactive Programming in Swift. Contribute to ReactiveX/RxSwift development by creating an account on GitHub.

github.com

 

 

 

728x90
๋ฐ˜์‘ํ˜•