Example
์ผ๋ฐ ๋น๋๊ธฐ ์ฒ๋ฆฌ ex) ๋ฒํผํด๋ฆญ์ onLoad() ํจ์๊ฐ ํธ์ถ๋์ด downloadJson()์ผ๋ก json ๋ฐ์ดํฐ ๋ค์ด๋ฐ๊ณ ํ๋ฉด์ ์ถ๋ ฅ
์์ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ด return์ ํ์ฉํ์ฌ ๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์ถ์
์ด๋ ๊ฒ ์ฒ๋ฆฌํ๋๋ก ํ๋ ์ ํธ๋ฆฌํฐ๊ฐ ๋ฐ๋ก Rxswift (์ด์ธ์๋ PromiseKit, Bolt, combine๋ฑ๋ฑ ๋ค์)
-> Rxswitf๋ ๋น๋๊ธฐ๋ก ์๊ธฐ๋ ๊ฒฐ๊ณผ๊ฐ์ completion์ผ๋ก ์ ๋ฌํ๋๊ฒ์ด ์๋๋ผ return์ผ๋ก ์ ๋ฌํจ์ผ๋ก์จ, ์ฝ๋๋ ๋๊ธฐ์์ผ๋ก ๋ณด์ด์ง๋ง ๋น๋๊ธฐ์ ์ผ๋ก ๋์ค์ ์ํ์ ๋ง์น๊ณ ์๋ฃ๋ ๊ฐ์ ๋ณ์์ ํ ๋นํ ์ ์๋ค!
create๋ observable์ subscribeํจ์๊ฐ ํธ์ถ๋์ด์ผ ์คํ๋๋ค ์ดํ onNext, onError, onComplete์ ๋ฐ๋ผ ์ฒ๋ฆฌ๋๊ณ disposed ๋๋ค
RxSwift ์ด์ ์ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ
- Apple์ ๋น๋๊ธฐ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ๋ง์ API๋ฅผ ์ ๊ณต.
- NotificationCenter
: ์ฌ์ฉ์๊ฐ ์ฅ์น์ ๋ฐฉํฅ์ ๋ณ๊ฒฝํ๊ฑฐ๋ ํค๋ณด๋๊ฐ ๋ฑ์ฅํ๊ณ ์ฌ๋ผ์ง๋ ๊ฒ๊ณผ ๊ฐ์ด ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๋ง๋ค ์ฝ๋๋ฅผ ์คํํฉ๋๋ค. - Delegate Pattern
: ์์์ ์๊ฐ์ ๋ค๋ฅธ ํด๋์ค ๋ API์ ์ํด ์คํ๋ ๋ฉ์๋๋ฅผ ์ ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด Application Delegate์์ ์ ์๋ฆผ์ด ๋์ฐฉํ ๋ ์ํํด์ผ ํ ์์ ์ ์ ์ํ์ง๋ง ์ด ์ฝ๋๊ฐ ์ธ์ ์คํ๋๋์ง ๋๋ ์คํ๋ ์ง ์ ์ ์์ต๋๋ค. - Grand Central Dispatch (GCD)
: ์ํ์ ์คํ์ ์ถ์ํํ๋ ๋ฐ ๋์์ ์ค๋ค. Serial Queue์์ ์์ฐจ์ ์ผ๋ก ์คํ๋๋๋ก ์ฝ๋๋ฅผ ์์ฝํ๊ฑฐ๋ ์ฐ์ ์์๊ฐ ๋ค๋ฅธ ์ฌ๋ฌ Queue์์ ๋์์ ๋ง์ ์์ ์์ ์ ์คํํ ์ ์์ต๋๋ค. - Closure
: ํด๋์ค๊ฐ์ ์ ๋ฌํ ์์๋ ๋ถ๋ฆฌ ๋ ์ฝ๋. ๊ฐ ํด๋์ค๊ฐ ์คํ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ ์ ์์ต๋๋ค. ์ด๋ค ์ํฉ์์ ์คํํ ์ง ๊ฒฐ์
- NotificationCenter
- ํ์ง๋ง API๋ฅผ ํตํ ๋ณตํฉ์ ์ธ ๋น๋๊ธฐ ์ฝ๋๋ ์ฝ๋ ์ ์ฒด๊ฐ ์ด๋ค ์์๋ก ์คํ๋๋์ง ํ์ ํ๋๊ฒ์ด ์ด๋ ต๋ค.
RxSwift
- RxSwift is a library for composing asynchronous and event-based code by using observable sequences and functional style operators, allowing for parameterized execution via schedulers.
- RxSwift in its essence simplifies developing asynchronous programs by allowing code to react to new data and process it in a sequential and isolated manner.
- RxSwift๋ ์ฝ๋๋ฅผ ์๋ก์ด ๋ฐ์ดํฐ์ ๋ฐ์ํ๋ฉฐ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ฒ ํจ์ผ๋ก์จ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ์ฝ๊ฒํ๋๋ก ๋์์ค๋๋ค.
RxSwift ๊ตฌ์ฑ์์
- Observable
- ReactiveX์์ Observer๋ Observable์ subscriptionํ์ฌ, Observable์ด ๋ฐฐ์ถํ๋ ํ๋ ๋๋ ์ฐ์๋ ํญ๋ชฉ์ ๋ฐ์
- ReactiveX์์ Observable ๊ฐ์ฒด๋ 3๊ฐ์ง ์ด๋ฒคํธ๋ฅผ ๋ฐฐ์ถ
- next : ์ต์ (๋ค์)๊ฐ์ ์ ์กํ๋ ์ด๋ฒคํธ
- error : Observable์ด ๊ฐ์ ๋ฐฐ์ถํ๋ค ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด error๋ฅผ ๋ฐฐ์ถํ๊ณ ์ข ๋ฃ์ํค๋ ์ด๋ฒคํธ
- complete : ์ฑ๊ณต์ ์ผ๋ก ์ด๋ฒคํธ ์ํ์ค๋ฅผ ์ข ๋ฃ์ํค๋ ์ด๋ฒคํธ. Observable์ด ๋ ์ด์ ๊ฐ์ ๋ฐฐ์ถํ์ง ์์
- Subjects
- subject๋ Observer๋ Observable์ฒ๋ผ ํ๋ํ๋ ReactiveX์ ์ผ๋ถ ๊ตฌํ์ฒด์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ผ์ข ์ bridge
- subject๋ ํ๋ ์ด์์ Observable์ ๊ตฌ๋ ํ ์ ์๋ Observer์ด๋ฉด์ ๋์์ Observable์ด๊ธฐ๋ ํ๊ธฐ ๋๋ฌธ์,ํญ๋ชฉ๋ค์ ํ๋ ํ๋ ๊ฑฐ์น๋ฉด์ ์ฌ๋ฐฐ์ถํ๊ณ ๊ด์ฐฐํ๋ฉฐ ์๋ก์ด ํญ๋ชฉ๋ค์ ๋ฐฐ์ถํ ์๋ ์๋ค.
- Operators
- Operator๋ฅผ ์ฌ์ฉํด Observable์ ์ํด ๋ฐฉ์ถ๋๋ ์ด๋ฒคํธ๋ฅผ ๋ณํํ๊ณ ์ฒ๋ฆฌํ์ฌ ๋์ํ ์ ์๋ค.
- Operator๋ ํฌ๊ฒ ์๋์ ์ธ ๊ทธ๋ฃน์ผ๋ก ๋๋๋ค
- Filtering Operators : .next์ด๋ฒคํธ๋ฅผ ํตํด ๋ฐ์์ค๋ ๊ฐ์ ์ ํ์ ์ผ๋ก ์ทจํ ์ ์๋ค.
- Transforming Operators : Observable์ ๋ณํํ๋ Operator
- Combining Operators : Sequence๋ค์ ๋ชจ์ผ๊ณ , ๊ฐ Sequence ๋ด์ ๋ฐ์ดํฐ๋ฅผ ๋ณํฉํ๋ Operator
- Schedulers
- Observable ์ฐ์ฐ์ ์ฒด์ธ์ ๋ฉํฐ์ค๋ ๋ฉ์ ์ ์ฉํ๊ณ ์ถ๋ค๋ฉด, ํน์ ์ค์ผ์ค๋ฌ๋ฅผ ์ฌ์ฉํด์ ์ฐ์ฐ์(๋๋ ํน์ Observable)๋ฅผ ์คํ
- Rx์์ Scheduler๋ Dispatch Queue์ ๊ฐ๋ค.
'iOS ๐ > iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Objective-C] atomic vs nonatomic (0) | 2021.12.06 |
---|---|
iOS Code Signing (0) | 2021.06.25 |
RxSwift : ๋ค์ด๊ฐ๊ธฐ์ ์์ (0) | 2021.05.16 |
viewcontroller๊ฐ ๋ฐ์ดํฐ ์ ๋ฌํ๋ 6๊ฐ์ง ๋ฐฉ๋ฒ (0) | 2021.03.02 |
Managing iOS App's Life Cycle (0) | 2021.02.24 |