Promise, Rx ๋ฑ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๋ง๋ค. ์ด๋ฅผ ๋ฐฐ์๋ณด๊ธฐ ์ด์ ์, ์ ๊ทธ๋ฌํ ๊ฐ๋ ์ด ๋์๋์ง, ์ด๋ ํ ๋ฐฉ์์ผ๋ก ๊ฐ์ ํด์๋์ง๋ฅผ ์ฝ๋๋ฅผ ๊ณ ์ณ๋ณด๋ฉด์ ์ดํดํด๋ณด๋ ๊ฒ์ด ์ด ํฌ์คํ ์ ๋ชฉํ์ด๋ค. ์ต๋ํ ๊ฐ์กฐ์์ผ๋ก ์ ์ผ๋ ค ๋ ธ๋ ฅํ๋ค. ์ฒซ๋ฒ์งธ ๊ธ์์๋ ์์ฐจ์ ์ผ๋ก ๋คํธ์ํฌ ๋น๋๊ธฐ ์ฒ๋ฆฌ์ฝ๋๋ฅผ ์ฝ๊ธฐ ์ฝ๋๋ก ๊ฐ์ ํด๋ณด๋ฉด์, ์ ์ด๋ฌํ ๊ฐ๋ ์ด ๋์ค๊ฒ ๋์๋์ง๋ฅผ ์ดํดํด๋ณด์.
ํ๋ก์ ํธ ์ค๋ช
- Load ๋ฒํผ์ ๋๋ฅด๋ฉด ๋คํธ์ํฌ ํต์ ์ผ๋ก json์ ๋ฐ์์ด
- ์ธ๋์ผ์ดํฐ ๋ฐ๊ฐ ์ค๋ฅธ์ชฝ์ ์๊ธฐ๊ณ , ๋ก๋๊ฐ ๋๋๋ฉด ์๋์ textView์ json์ ๋ณด์ฌ์ง๊ฒ ํจ
- ๋จผ์ ํ๋ก์ ํธ๋ ๊ฐ๋จํ๋ค.
- ๋ทฐ๊ฐ ๋ก๋๋๋ฉด, ํ์ด๋จธ๋ฅผ ์ค์ ํด์ ํ๋ฉด์ ์๊ฐ์ด ํ์๋๊ฒ ํ๋ค.
- ๋ฒํผ์ ๋๋ฅด๋ฉด ์ธ๋์ผ์ดํฐ๋ฅผ ์์ํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์จ ๋ค์ ํ๋ฉด์ ๋ณด์ฌ์ค๋ค.
- ๋ง์ง๋ง์ผ๋ก ์ธ๋์ผ์ดํฐ๋ฅผ ๊บผ์ค๋ค.
์ฒซ๋ฒ์งธ ๊ฐ์ ์ฌํญ
- ํ์ง๋ง ์ด๋ ๊ฒ ๋๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๋ฐ,
String(data: encoding:)
์ ๊ฒฝ์ฐ ๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์, UI Update๋ฅผ ํ ์ ์์ด, ๋ชจ๋ ํ๋ฉด์ด ๋ฉ์ถ๋ค, ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๋ค์ ์ ๋ฐ์ดํธ๊ฐ ๋๋ค. - ์ด๋ Main Thread์์ UI๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ ๋ฌธ์ ์ด๋ค. ๋ฐ๋ผ์ ๋น๋๊ธฐ๋ก ํด๋น ์์ ์ ์งํํด์ผ ํ๋ค.
- ํด๋น ์ฝ๋๋ ์ด์ ๊ฐ์ด ๋ณ๊ฒฝํ์ฌ ํด๊ฒฐ์ด ๊ฐ๋ฅํ๋ค.
weak self
๋ฅผ ์ฌ์ฉํด์ ์ํ์ฐธ์กฐ๋ฅผ ๋ฐฉ์ดํด์ฃผ์๋ค.- UI update์ ๊ฒฝ์ฐ main thread์์ ๋์ํ๊ฒ ํ์ฌ ์ํ๋ ๋์์ ํ๊ฒ ํ์๋ค.
๋๋ฒ์งธ ๊ฐ์ ์ฌํญ
- ์ฝ๋๊ฐ ์ฝ๊ธฐ ์ข์ง ์๋ค. ๊ธฐ๋ฅ ๋ณ๋ก ๋๋๋ ๊ฒ์ด ์ฝ๊ธฐ ์ข๋ค.
- ํด๋น ํจ์์ ๋์์, ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๊ณ , ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ณ . ๋๋จ๊ณ๋ก ๋๋ ์ ์๋ค.
- ํ์ง๋ง ๋ฌธ์ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ๋์ ์์ฒด๊ฐ ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์, ํด๋น ๋์์ด ๋๋ ํ์ UI๋ฅผ ์ ๋ฐ์ดํธ ํด์ผํ๋ค๋ ์ ์ฝ์ด ์กด์ฌํ๋ค๋ ๊ฒ์ด๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ๋ฐ์ดํฐ๋ฅผ ๋น๋๊ธฐ๋ก ๋ฐ์์ค๋, ํด๋น ์์ ์ด ๋๋ ํ์ ๋์ํ๋ Completion handler๋ฅผ ์ฌ์ฉํ์ฌ ํจ์๋ฅผ ๋ถ๋ฆฌํ๋ค.
- ์ด ๋ฐฉ๋ฒ์ด ๋ณดํต์ swift์์ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ด๋ค.
- main thread์์ ์๋ํ๋๋ก completion handler๋ฅผ ๋ฃ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
- ์ฌ๊ธฐ์
@escaping
ํค์๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. - ํด๋น ํค์๋๋, ํจ์ ๋ด์์ ํด๋ก์ ์ฌ์ฉ์ด ๋๋์ง ์๊ณ , ํจ์์ ๋ฆฌํด์ด ๋๋ ํ์ ํด๋ก์ ์ฌ์ฉ์ ํ๋ ๊ฒฝ์ฐ ๋ช ์์ ์ผ๋ก ์ ์ด์ฃผ์ด์ผ ํ๋ค.
- ํด๋น ํด๋ก์ ๊ฐ ์ฝ์คํ์ด ์ฌ๋ผ์ง ๋ค์ ์ง์์ง์ง ์๊ณ (์๋ ์ฝ์คํ์ ์์ธ ํจ์์ ๋งค๊ฐ๋ณ์๋ฑ์ ํจ์ ํธ์ถ์ด ์ข ๋ฃ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ์์ ํ ๋น ํด์ ๋๋ค.) ์ถ์ ์ ๊ณ์ํ ์ ์๊ฒ ํ๋ค.
- ํ์ง๋ง ๋ง์ฝ ํด๋ก์ ๊ฐ optional์ธ ๊ฒฝ์ฐ์๋ ํด๋น ํค์๋๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋๋ค.
- ์ต์
๋์ธ ๊ฒฝ์ฐ
@escaping
์ด ๊ธฐ๋ณธ ๋์์ด๋ผ๊ณ ํ๋ค. - ์ถ๊ฐ
- ์ผ๋จ ๊ธฐ๋ณธ์ ์ผ๋ก excaping์ด ๊ธฐ๋ณธ์ด๋ค.
- ๊ทธ๋ฐ๋ฐ ํจ์์ ํ๋ผ๋ฏธํฐ๋ก ๋ค์ด์ฌ ๋๋ง ๊ธฐ๋ณธ์ผ๋ก non escaping์ด ๋๋ค.
- ๊ทธ ์ด์ ๋ ์๋ง ์ฝ์คํ์ ๋ฌธ์ ์ผ ๊ฒ์ด๋ค. ๋น์ฐํ ํ๋ผ๋ฏธํฐ๋ ์ฝ ์คํ์ด ๋๋ํ์ ๋ค ์ง์์ ธ์ผ ํ๋๊น
- ๊ทธ๋์ ํน๋ณํ ๊ฒฝ์ฐ์ ๋ํด ํด๋น ํค์๋๋ฅผ ์ ์ด์ฃผ์ด์ผ ํ๋ ๊ฒ
- ๊ทธ๋ฐ๋ฐ, ์ด๋ ๊ฒ ํ๋ผ๋ฏธํฐ๋ก ํด๋ก์ ๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ (์ด๊ฑฐํ, ํํ, ๊ตฌ์กฐ์ฒด์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ)์๋ ๊ธฐ๋ณธ ๋์์ผ๋ก escaping์ด ์ ์ฉ๋๋ค.
- ๊ทธ๋ฌ๋๊น ํ๋ผ๋ฏธํฐ๋ก ์ต์ ๋ ํด๋ก์ ๋ฅผ ๋ฃ๋ ๊ฒฝ์ฐ, ์ ์ด์ ์ต์ ๋์ ์ ์ฒด๊ฐ enum์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ ๋์์ด escaping์ธ ๊ฒ.
- ๊ทธ๋์ ์์จ์ค๋ ๋ฌด๋ฐฉํ๋ค.
- ์ถ์ฒ
- ์ต์
๋์ธ ๊ฒฝ์ฐ
์ธ๋ฒ์งธ ๊ฐ์ ์ฌํญ
- ๊ทธ๋ฐ๋ฐ, ์ด๊ฒ ๋ฐ๋ก ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฌ์ฉํ ๋ฐฉ๋ฒ์ด๋ค.
- ํ์ง๋ง ์ฝ๋ฐฑํจ์์ ๋จ์ ์, ๊ณ์ํด์ ์ฝ๋์ depth๊ฐ ์ฆ๊ฐํ๋ค๋ ์ ์ด๋ค.
- ๋๊ธฐ์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ์ฒ๋ผ, ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ณ , ๋ฐ์ ๋ฐ์ดํฐ์ ๋ํด์ UI๋ฅผ ์ ๋ฐ์ดํธํด์ค๋ค๋ฉด ์ผ๋ง๋ ์ข์๊น
- ์ด๋ฐ์์ผ๋ก ๋ง์ด๋ค.
- ๊ฒฐ๊ตญ ํ๊ณ ์ถ์ ๊ฒ์ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฆฌํดํด์ ์ฌ์ฉํ ์ ์์๊น?
- ๋ฆฌํดํด์ ์ฌ์ฉํ๋ฉด ๋๊ธฐ์ ์ฒ๋ฆฌ๋ฐฉ๋ฒ์ฒ๋ผ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค.
- ์ด๋ฌํ ํ์์ฑ์์ ํ์ํ ๊ฒ์ด Reactive programming์ด๋ค.
- ์๋์์ ๋ณด๋ฉด ์๊ฒ ์ง๋ง, ๋จผ์ ํ๋ฆ์ ์ ํด๋๊ณ (ํ์ ์์ ์ด๋ฌํ ํ๋ฆ์ ๋ง๋ค์ด๋ฒ๋ฆฐ๋ค.) ๋์ค์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์์ ๋ ์ฐ๊ด๋ ์์ ์ด ์คํ๋๋ ๋ฐฉ๋ฒ์ด๋ค.
- ๊ทธ๋์ ์ด๋ฌํ ํ์ ์ ๋ง๋ค์๋ค.
- ๊ฐ๋ ์ ์ผ๋ก๋ ๋์ค์ ์๊ธฐ๋ ๋ฐ์ดํฐ๋ผ๊ณ ํด๋์๋ค.
- ํด๋น ํ์ ์ ๋ง๋ค์ด์ ์ฌ์ฉํ ๋๋, ๋ฐ์ดํฐ๊ฐ ๋ฐ์ํ๊ธฐ ์ด์ ์ ์ํํ ๊ฒ๋ค์ ๋ํด ์ฒ๋ฆฌํ ํด๋ก์ ๋ฅผ ๋ฐ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก ์คํํ๋ ์์ (๋์ค์์ค๋ฉด)์ ์คํ์ด ๋๋ ๋ค์ ์ฒ๋ฆฌํ ์์ (completion)์ ๋๊ฒจ์ ์์ ์ ์ฒ๋ฆฌํ๋ค.
- ์ด๋ ๊ฒ ์์ฑํ ์ ์๋ค.
- ์ฆ, ์ฐ๋ฆฌ๊ฐ ์ฒ์์ ์ํ๋ ๊ฒ ์ฒ๋ผ, ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌํ๋ ๊ฐ์์ฒด๋ฅผ ๋ฆฌํดํ๋ ๊ฒ์ฒ๋ผ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
- ํ์ง๋ง, ์์ ๊ตฌํ์ฌํญ์ ๋ณด๋ฉด ์๊ฒ ์ง๋ง, ๊ฐ๋ ์ ์ผ๋ก ๋ฆฌํดํ ๊ฒ์ผ ๋ฟ, ์์ง ๋ก์ง์ด ์คํ๋์ง ์์๋ค๋ ๊ฒ์ ์ ์๋ค.
- ์ด๋ ์์ ์ ์คํ์ด ๋๋๋? ๋์ค์์ค๋ฉด ์ด๋ผ๋ ํค์๋๋ฅผ ํตํด์, ํด๋น ์์ ์ด ๋ง์น ์ดํ์ ํ ๋์์ ๋ช ์ํ ๋, ๋น๋๊ธฐ์ ์ผ๋ก ์คํ๋๋ค.
- ์ด์ ๋์ค์ ๋ณด๋ฉด ์๊ฒ ์ง๋ง, ์ฌ๊ธฐ์
๋์ค์ ์๊ธฐ๋ ๋ฐ์ดํฐ
๋ผ๋ ํ์ ์์ฒด์ ์ด๋ฆ์ ์ด๋ป๊ฒ ๋ช ๋ช ํ๋๋์ ๋ฐ๋ผ ๋ค์ํ ํ๋ ์์ํฌ๊ฐ ๋ฐ์ํ๋ค.- Promise
- Combine
- RxSwift
- Bolts
- RxSwift์์๋
๋์ค์์๊ธฐ๋๋ฐ์ดํฐ = Observable
,๋์ค์์ค๋ฉด = Subscribe
๋ก ๋ช ๋ช ํ๋ค.
Reactive Programming
๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ์ ๋ฐ์ดํฐ ํ๋ฆ(data flows)๊ณผ ๋ณํ ์ ํ์ ์ค์ ์ ๋ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์(programming paradigm)์ด๋ค. ์ด๊ฒ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ ์ ๋๋ ๋์ ์ธ ๋ฐ์ดํฐ ํ๋ฆ์ ์ฝ๊ฒ ํํํ ์ ์์ด์ผํ๋ฉฐ, ๋ฐ์ดํฐ ํ๋ฆ์ ํตํด ํ๋ถ ์คํ ๋ชจ๋ธ์ด ์๋์ผ๋ก ๋ณํ๋ฅผ ์ ํํ ์ ์๋ ๊ฒ์ ์๋ฏธํ๋ค.
- ํต์ฌ
- ํ๋์ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์ ํ
- ๋ฐ๋ ์์ ์ ์กด์ฌ
Rx = Observable + Observer + Schedulers
- Rx๋ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ์ฝ๊ฒ ํ๊ธฐ ์ํ ์ ํธ๋ฆฌํฐ์ด๋ค.
![imAssets/134277748-9c37d69f-e9bb-47center-small}General Marble Diagram
๋ค๋ฒ์งธ ๊ฐ์ ์ฌํญ
- ์ด์ ๋ ์ค์ RxSwift๋ฅผ ์ฌ์ฉํ์ฌ ๋์์ ๋ณ๊ฒฝํด๋ณด์.
- ๋ณ๊ฒฝ์ฌํญ์ ๋ค์๊ณผ ๊ฐ๋ค.
- Observable, subscribe๋ก ํจ์์ด๋ฆ์ ๋ณ๊ฒฝํ์๋ค.
- subscribeํ ๋ ๋ฐ๋ ์ธ์๊ฐ json์ด ์๋๊ณ event๋ฅผ ๋ฐ๋๋ค.
- ํด๋น event๋ type์ด ์๋๋ฐ, onNext, error, completed๊ฐ ์๋ค.
- Observable ๊ฐ์ฒด๋ฅผ ์ ์ธํ ๋, ๋์์ ์ ์ํ ํ์ Disposables๋ก ๋ฆฌํดํ๋ค.
- ์๋์์ subscribe๋์์ ํ ๋ค์ ์ด Disposable ๊ฐ์ฒด๋ฅผ ๋ฆฌํด๋ฐ๋๋ค.
- ํด๋น ๊ฐ์ฒด๋
dispose
๋ผ๋ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ, ์ด๋ ์์ ์ ์ํ subscribe๋์์ด ๋ค๋ฅธ ์ค๋ ๋์์ ๋๋์ง ์์์ด๋ ์ทจ์ํ ์ ์๋ค. - ๊ทธ๋์ ์์ ์ฝ๋๋ฅผ ์คํ์ํค๋ฉด,
let disposable
๋ผ์ธ์ ์คํ์ํค๊ณ ๋ฐ๋กdisposable.dispose()
๊ฐ ์คํ๋์ด ๋คํธ์ํฌ ํต์ ์ ์ทจ์์์ผ๋ฒ๋ ค ์๋ฌด๋ฐ ๋์๋ ํ์ง ์๋๋ค. - disposable ๊ฐ์ ๊ฒฝ์ฐ
viewWillDisappear
์ ์ถ๊ฐํ์ฌ ์ฌ์ฉํ๋ฉด ๋ทฐ๊ฐ ๋ณ๊ฒฝ๋ ๋ ์ทจ์์ํค๋ ํจ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.- VC์์ ๋ณ์๋ก ๊ฐ์ง๊ณ ์์ด์ผ ํ ๊ฒ
- ๋ง์ฝ์ ๋ฐ์์ผ ํ๋ ๊ฒ๋ค์ด ๋ง๋ค๋ฉด ๋ฐฐ์ด๋ก ๊ฐ์ง๊ณ ์๋ค๊ฐ ๋ฐฐ์ด ์์ ์๋ disposable์ ๋ํด ๋ชจ๋ dispose๋ฅผ ํ๋ฉด ๋๋ค.
๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ
๋๊ฐ์ง๋ฅผ ๋ฐฐ์ธ ๊ฒ์ด๋ค.
- ๋น๋๊ธฐ๋ก ์๊ธฐ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ธ์ ๋ฆฌํดํ๋ ๋ฐฉ๋ฒ
- ํ๋์ฉ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์กํ๊ฒ ๋๋ค. ๋๋๋ฉด ๋๋๋ค๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํจ๋ค.
- ๋ค์์ ์ ๋๋ก ๋ ์ฌ์ฉ๋ฒ์ ์์๋ณด์.
- ์ธ์ ์ ๋ง๋ค๊ณ ์์ํ๋ค.
- ๋ง์ฝ์ ๊ตฌ๋
์ ์ทจ์ ํ๋ค๋ฉด(Disaposable) ์ธ์
๋ ์ข
๋ฃํด์ผ ํ๋ค.
- ํด๋น ์์ ์ Disposable์ ๋ฌถ์ด ๋๋ค.
- ์ธ์ ๋ด๋ถ์์๋ ์๋ฌ๊ฐ ๋ ๊ฒฝ์ฐ, error๋ฅผ ๋ฐฉ์ถํ๋ค.
- ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๊ฒฝ์ฐ ๋ค์ ๋ฐ์ดํฐ๋ก ๋ฐฉ์ถํ๋ค.
- ๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฒ ํ๋ฉด ์ด์ ์ ๋ง๋ค์๋ ์๋ ์ฝ๋์์ ์๋ฌ๊ฐ ์๊ธด๋ค.
- ์ด์ ์๋ ๋์ค์์ค๋ฉด ํจ์ ์์์ main ์ค๋ ๋์์ ๋์์ํค๋๋ก ํ์ง๋ง, ์ง๊ธ Rx์ ๊ฒฝ์ฐ subscribe ๋์์ ํ ๋, URLSession์ ์คํ์ํจ ๊ทธ ์ค๋ ๋์์ ๋์์ ์คํ์ํค๋๋ก ์ค์ ๋์ด ์๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ง๊ธ ๊ฐ์ ๊ฒฝ์ฐ UIupdate๋ฅผ ํ๊ธฐ ์ํด์๋ ์ค๋ ๋๋ฅผ ๋ณ๊ฒฝํด์ฃผ์ด์ผ ํ๋ค.
- ์ด๋ ๊ฒ!
Observable์ ์๋ช ์ฃผ๊ธฐ
- Create
- Subscribe
- onNext
- onCompleted, onError
- Disposed
์ฌ๊ธฐ์ ์์์ผ ํ๋ ์ ์, ์๊น๋ ๋งํ์ง๋ง, Create ๋์๋ค๊ณ ๋์ํ๋๊ฒ ์๋๋ค. Subscribe๊ฐ ๋์์ ๋ ๋์ํ๋ค. ์ฆ, ๊ตฌ๋
์ ์คํํ ๋ ๋ฐ์ดํฐ๋ค์ด ์์ฑ๋์ ์ ๋ฌ๋๋ ๊ฒ. debug()
ํจ์๋ฅผ ์ถ๊ฐํด์ ๋์์ ํ์ธํ ์ ์๋ค.
2021-09-22 13:11:23.037: ViewController.swift:109 (onLoad()) -> subscribed
2021-09-22 13:11:24.252: ViewController.swift:109 (onLoad()) -> Event next(Optional("[{\"id\":1,\"name\":\"Gladys Brugden\",\"avatar\":\"https://robohash.org/a ....
2021-09-22 13:11:24.279: ViewController.swift:109 (onLoad()) -> Event completed
2021-09-22 13:11:24.279: ViewController.swift:109 (onLoad()) -> isDisposed
์ํ์ฐธ์กฐ ์ด์
- ๊ฒฐ๊ตญ ํด๋ก์ ๋ฅผ ํ์ฉํด์ ์ด๋ฌํ ๋ก์ง์ ๋ง๋ค์ด๋๋ค.
- ๊ทธ๋ฌ๋ฉด ๋ฐ๋ผ์ค๋ ๋ฌธ์ ๊ฐ ๋ญ๋๋ฉด, ์ํ์ฐธ์กฐ๋ค.
- ์ผ๋จ ์ํ์ฐธ์กฐ๊ฐ ๋ฐ์ํ ์ ๋ฐ์ ์๋๋ฐ, ์ด๋ ์์ ์ ๊ทธ๋ผ ํด๋ก์ ๋๋ฌธ์ ๋ฐ์ํ๋ reference count๊ฐ ์ค์ด๋๋๋.
- ์ฆ, ์ธ์ ํด๋ก์ ๊ฐ ์ฌ๋ผ์ง๋๋.
- on complete๊ฐ ๋๋ฉด ์ฌ๋ผ์ง๋ค.
- ํ์ง๋ง ํน์ ๋ชจ๋ฅด๋
[weak self]
๋ฅผ ๋ช ์์ ์ผ๋ก ์ ๋๊ฒ ๋์๋ณด์ธ๋ค.