๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐ŸŽ iOS

(38)
[iOS/Architecture] Coordinator Pattern ์•ˆ๋…•ํ•˜์„ธ์š” ์ œ์ธ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์ฐธ์—ฌํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์— ๋„์ž…ํ•˜๊ฒŒ ๋œ ์ฝ”๋””๋„ค์ดํ„ฐ ํŒจํ„ด์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๋ คํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋””๋„ค์ดํ„ฐ๋ฅผ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ด๋ณด๋Š” ๊ฒƒ์ด ์ฒ˜์Œ์ด๋ผ ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด์„œ ์ ์šฉํ•˜๋Š” ๊ณผ์ •์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ฝ”๋””๋„ค์ดํ„ฐ ํŒจํ„ด์ด ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๋Š” ์ •๋„๋กœ๋งŒ ์ •๋ฆฌํ•˜๊ณ , ๋‹ค๋ฅธ ํฌ์ŠคํŒ…์œผ๋กœ ๊ตฌ์ฒด์ ์ธ ์ ์šฉ๊ธฐ๋ฅผ ๋“ค๊ณ ์˜ค๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!! ์ด ์  ์ฐธ๊ณ ํ•ด์„œ ์ฝ์–ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค : ) Coordinator Pattern์„ ๋„์ž…ํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ MVVM ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ ์šฉํ•ด UI์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ณผ์ •์—์„œ ํ™”๋ฉด์ „ํ™˜์€ ์–ด๋””์„œ ํ•ด์ค˜์•ผํ•˜๋Š”๊ฑฐ์ง€..? ๋ผ๋Š” ์˜๋ฌธ์ด ๋“ค์—ˆ์—ˆ๋Š”๋ฐ์š”, ํ™”๋ฉด์ „ํ™˜์ด ๋”ฐ์ง€๊ณ  ๋ณด๋ฉด UI์™€ ๊ด€๋ จ๋œ ๋ถ€๋ถ„์€ ์•„๋‹ˆ์ง€๋งŒ ViewController๊ฐ€ ๋‹ค์Œ ํ™”๋ฉด์„ present ํ•ด์ฃผ์–ด์•ผํ•˜๋‹ˆ๊นŒ..
[Swift] ๊ณ ์ฐจํ•จ์ˆ˜ - map, filter, reduce ์•ˆ๋…•ํ•˜์„ธ์š” ์ œ์ธ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ Swift์˜ ๊ณ ์ฐจํ•จ์ˆ˜ ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Swift์˜ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ณ ์ฐจํ•จ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ์ž์ฃผ ์“ฐ์ด๊ณ , ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์‹œ์—๋„ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” map, filter, reduce ์š” ์„ธ๊ฐ€์ง€ ํ•จ์ˆ˜์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ๊ณ ์ฐจํ•จ์ˆ˜๋ž€? ๊ณ ์ฐจํ•จ์ˆ˜๋Š” ๋‹ค๋ฅธํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌ์ธ์ž๋กœ ๋ฐ›๊ฑฐ๋‚˜ ํ•จ์ˆ˜๋ฅผ ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. (Swift๋Š” ํ•จ์ˆ˜๋ฅผ ์ผ๊ธ‰ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜๋ฅผ ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ์ „๋‹ฌ์ธ์ž๋กœ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํ•จ์ˆ˜๋ฅผ ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค!) ๊ณ ์ฐจํ•จ์ˆ˜์˜ ์ข…๋ฅ˜๋กœ๋Š” map, filter, reduce, forEach, compactMap, flatMap ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ค‘์—์„œ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” map, filter, reduce์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ด…์‹œ๋‹ค..
[iOS] ReactorKit์ด๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” ์ œ์ธ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์ตœ๊ทผ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ๋ฅผ MVVM ๊ตฌ์กฐ๋กœ ๋ฆฌํŒฉํ† ๋ง์„ ํ•˜๋ฉฐ ๋„์ž…ํ•˜๊ฒŒ๋œ ReactorKit(๋ฆฌ์•กํ„ฐํ‚ท)์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”!! ReactorKit์ด๋ž€? ReactorKit์€ ๋ฐ˜์‘ ๋ฐ ๋‹จ๋ฐฉํ–ฅ Swift ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. MVVM๊ณผ ๊ฐ™์€ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ณด์‹  ๋ถ„๋“ค์ด๋ผ๋ฉด ๋Š๋ผ์…จ๊ฒ ์ง€๋งŒ ์•„ํ‚คํ…์ฒ˜๋Š” ๊ทœ๊ฒฉํ™”๋œ ํ˜•์‹์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž, ํšŒ์‚ฌ๋งˆ๋‹ค ์“ฐ๋Š” ๋ฐฉ์‹์ด ์ •๋ง ๋‹ค๋ฅด๊ณ  ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ReactorKit์€ ํ˜•์‹์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— MVVM ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ์ •ํ˜•ํ™”๋œ ๋ฐฉ์‹(๊ฐ™์€ ํ…œํ”Œ๋ฆฟ)์œผ๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์œ„์™€ ๊ฐ™์ด ๋งŽ์€ ํšŒ์‚ฌ์—์„œ ReactorKit์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ReactorKit..
[Swift] ํƒ€์ž… ์ถ”๋ก ๊ณผ ํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜ ์•ˆ๋…•ํ•˜์„ธ์š” ์ œ์ธ์ž…๋‹ˆ๋‹ค! ๊ธ€์„ ๊ต‰์žฅํžˆ ์˜ค๋žœ๋งŒ์— ์˜ฌ๋ฆฌ๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ,, ๊ทธ๋™์•ˆ TIL ์Šคํ„ฐ๋””๋ฅผ ํ•˜๋ฉฐ ๊นƒํ—™์— ๊ทธ๋‚  ๊ณต๋ถ€ํ•œ๊ฑธ ์—…๋กœ๋“œํ•˜๋‹ค๋ณด๋‹ˆ ํ‹ฐ์Šคํ† ๋ฆฌ ์—…๋กœ๋“œ๋ฅผ ๊ฑฐ์˜ ๊นŒ๋จน๊ฒŒ๋œ... ๋จธ ๊ทธ๋Ÿฐ ์‚ฌ์—ฐ์ด...์žˆ์ง€๋งŒ ์‚ฌ์‹ค ํ•‘๊ณ„๊ณ ..ใ…Ž TIL ๊ธ€์„ ํ‹ฐ์Šคํ† ๋ฆฌ์—๋„ ์˜ฎ๊ธฐ๋ฉด์„œ ์ด์ œ ๋‹ค์‹œ ๊พธ์ค€ํžˆ ์—…๋กœ๋“œ๋ฅผ ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!! ์•„์ขŒ์ž~ ์˜ค๋Š˜์€ Swift์—์„œ ์ž๋ฃŒ๋ฅผ ๋ช…์‹œํ•˜๋Š” ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ธ ํƒ€์ž… ์ถ”๋ก ๊ณผ ํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜์„ ๋น„๊ตํ•˜๋ฉฐ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! Swift์—์„œ์˜ ์ƒ์ˆ˜, ๋ณ€์ˆ˜ ์„ ์–ธ let : ์ƒ์ˆ˜ ์„ ์–ธ ํ‚ค์›Œ๋“œ var : ๋ณ€์ˆ˜ ์„ ์–ธ ํ‚ค์›Œ๋“œ let ์ƒ์ˆ˜๋ช…: ํƒ€์ž… = ๊ฐ’ var ๋ณ€์ˆ˜๋ช…: ํƒ€์ž… = ๊ฐ’ // ์„ ์–ธ ์˜ˆ์‹œ let name: String = "Eunju" var age: Int = 20 ์œ„์™€ ๊ฐ™์ด let๊ณผ var ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด ์ƒ์ˆ˜๋‚˜ ..
[Design Pattern] ๊ตฌ์กฐํŒจํ„ด - Adapter Pattern ๊ตฌ์กฐ ํŒจํ„ด ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด์€ ๋””์ž์ธํŒจํ„ด ์ค‘ ๊ตฌ์กฐ ํŒจํ„ด์— ํ•ด๋‹นํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ตฌ์กฐ ํŒจํ„ด์ด ๋ฌด์—‡์ธ์ง€ ๋ถ€ํ„ฐ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! ๊ตฌ์กฐ ํŒจํ„ด์€ ํด๋ž˜์Šค์™€ ๊ฐ์ฒด๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜๋Š”์ง€์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์กฐ ํŒจํ„ด์€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ๊ตฌํ˜„์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ๊ฐ์ฒด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ๋“ค์˜ ์œ ์—ฐ์„ฑ์€ ๋Ÿฐํƒ€์ž„์—์„œ ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์—์„œ ๋น„๋กฏ๋˜๋ฉฐ, ์ •์  ํด๋ž˜์Šค๋กœ๋Š” ํ•  ์ˆ˜ ์—†๋Š” ์ผ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•ด์„œ ๊ตฌ์กฐ ํŒจํ„ด์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋…๋ฆฝ์ ์ธ ํด๋ž˜์Šค๋ฅผ ํ•˜๋‚˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋งŒ๋“œ๋Š” ํŒจํ„ด์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Adapter Pattern (์–ด๋Œ‘ํ„ฐ ํŒจํ„ด) ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด์€ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ง„ ๋‘ ๊ฐœ์˜ ๊ฐ์ฒด๊ฐ€ ํ•จ๊ป˜ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ..
[RxSwift] Observable RxSwift ๊ฐœ๋… ์ •๋ฆฌ๊ธ€์—์„œ RxSwift์˜ ์ •์˜์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๋ฉฐ, Observable์ด ๋ฐ˜์‘ํ˜•(Reactive) ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฐ€์žฅ ํฐ ํ•ต์‹ฌ์ด๋‹ค. ๋ผ๊ณ  ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด ์ค‘์š”ํ•œ ๊ฐœ๋…! Observable์ด ๋ฌด์—‡์ธ์ง€, ์–ด๋–ป๊ฒŒ ๋งŒ๋“œ๋Š”์ง€, ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์ข€ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ด…์‹œ๋‹ค! Observable Observable์˜ ๊ฐœ๋…๋ถ€ํ„ฐ ๋‹ค์‹œ ๊ฐ€์ ธ์™€์„œ ์„ค๋ช…ํ•ด๋ณด์ž๋ฉด, ReactiveX์—์„œ Observable ๊ฐ์ฒด๋Š” ์‚ฌ์ „์ ์ธ ์˜๋ฏธ๋Œ€๋กœ ์–ด๋–ค '๊ฐ์ฒด'๋ฅผ ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋งํ•˜๋ฉฐ, Observable ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•จ์œผ๋กœ์จ Observer๋Š” ๊ด€์ฐฐ์„ ์‹œ์ž‘(๊ตฌ๋…)ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด '๊ฐ์ฒด'์— ๋”ฐ๋ผ ์‹ค์ œ ๊ด€์ฐฐํ•˜๋Š” ๊ฐ’(== ์ŠคํŠธ๋ฆผ์— ํ˜๋ ค๋ณด๋‚ด๋Š” ๊ฐ’) ํ˜น์€ ๊ด€์ฐฐ์˜ ๋Œ€์ƒ์ธ ์‚ฌ๊ฑด(== ์ด๋ฒคํŠธ)์ด ๊ฒฐ์ •๋ฉ๋‹ˆ..
[Architecture] VIPER ํŒจํ„ด ์•ˆ๋…•ํ•˜์„ธ์š”, ์ œ์ธ์ž…๋‹ˆ๋‹ค! ์ตœ๊ทผ ์‹œ์ž‘ํ•œ ์•„ํ‚คํ…์ฒ˜ ๋ฐ ๋””์ž์ธ ์Šคํ„ฐ๋””์—์„œ ์ฒซ๋ฒˆ์งธ๋กœ ์ฃผ์ œ๋กœ ๋‹ค๋ฃจ์—ˆ๋˜ VIPER ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค๐Ÿ˜Š VIPER Pattern์ด๋ž€? View, Interactor, Presenter, Entity, Router์˜ ์•ฝ์ž๋ฅผ ๋”ฐ์™€์„œ VIPER๋ผ๋Š” ์ด๋ฆ„์ด ๋ช…๋ช…๋œ ๋‹จ์ผ์ฑ…์ž„์›์น™ ๊ธฐ๋ฐ˜์˜ ์•„ํ‚คํ…์ณ์ž…๋‹ˆ๋‹ค. ์‘์ง‘๋„๋Š” ๋†’๊ณ  ๊ฒฐํ•ฉ๋„๋Š” ๋‚ฎ์€ ํ˜•ํƒœ๋กœ, ์•„๋ฌด๋ž˜๋„ ๊ฐ๊ฐ์˜ ๊ตฌ๋ถ„์ด ๋งŽ์€ ๋งŒํผ ์—ญํ•  ๋‹จ์œ„์˜ ๊ตฌ๋ถ„์ด ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค. (์ด๊ฒƒ์ด ๋ญ”๊ฐ€ ์žฅ์ ์ด ๋  ์ˆ˜๋„ ๋‹จ์ ์ด ๋  ์ˆ˜๋„ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๊ธดํ•ฉ๋‹ˆ๋‹ค..) ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•ด๋ดค๋Š”๋ฐ์š”, ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ด…์‹œ๋‹ค! View : ์–ด๋–ค ํŒจํ„ด์ด๋“  ์‚ฌ์šฉํ•˜๋Š” View ์—ญํ• ์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ UIViewController, UIView๋“ค์ด ์ด ์—ญํ• ..
[RxSwift] RxSwift์™€ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์•ˆ๋…•ํ•˜์„ธ์š”! ์ œ์ธ์ž…๋‹ˆ๋‹ค :) ์š”์ฆ˜ ๋น„๋™๊ธฐ์  ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ํ•„์š”์„ฑ์„ ๋Š๋ผ๊ณ , ์•„ํ‚คํ…์ฒ˜ ๊ณต๋ถ€๋„ ์‹œ์ž‘ํ•˜๋‹ค ๋ณด๋‹ˆ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ RxSwift์— ๊ด€์‹ฌ์ด ์ƒ๊ฒจ ๊ณต๋ถ€๋ฅผ ํ•ด๋ณด๊ณ  ์žˆ๋Š”๋ฐ์š”! RxSwift์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ ์ •๋ฆฌํ•ด๋‚˜๊ฐ€๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! RxSwift๋ž€? RxSwift๋Š” Reactive eXtension + Swift์˜ ํ•ฉ์„ฑ์–ด๋กœ ์ด๋ฃจ์–ด์ง„ ์šฉ์–ด๋กœ, Swift์— ReactiveX๋ฅผ ์ ์šฉ์‹œ์ผœ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง๊ด€์ ์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ReactiveX๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?๐Ÿค” ReactiveX ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์— ๋”ฐ๋ฅด๋ฉด ReactiveX๋ž€, An API for asynchronous programming with observable streams '์˜ต์ €๋ฒ„๋ธ” ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ..