개요
- RxSwift 는 비동기 프로그램의 개발을 단순화시켜준다.
- 순차적이고 독립적으로 새로운 데이터에 반응하여 처리하는 방법을 제공한다
- sequential, isolated manner
비동기 프로그래밍이란?
iOS 앱에서 예를 들면:
- 버튼 탭에 반응하기
- 텍스트 필드가 포커스를 잃었을 때 키보드를 움직이기
- 인터넷에서 큰 용량의 사진을 다운로드하기
- 소리를 재생하기
작업들이 동시에 일어나고 있다
iOS 는 서로 다른 작업을 각자 다른 쓰레드에서 수행할 수 있도록 API 들을 제공한다
실제로 병렬로 실행되는 코드를 작성하는 것은 더욱 복잡하다 ( code in pararell )
- 특히 다른 실행 코드가 같은 데이터를 사용해야 할때 ( race condition ? )
- 어떤 코드가 데이터를 먼저 업데이트하는지, 어떤 코드가 최신 값을 읽어 온것인지 알기가 어렵기 때문
Cocoa 와 UIKit 이 제공하는 비동기 API들
- NotificationCenter
- Delegate Pattern : 직접 하지 않고 행동을 위임하거나, 협동하는 다른 객체 (Delegate) 를 지정하는 패턴