1. Driver
- 출력 Steam에서 UI를 만져야하는 경우 ObserveOn을 사용해서 MainThread로 변경해야하는데 이를 간단하게 줄여주는 데에 사용
- 따라서 API에서 Driver를 반환하는 경우에는 UI를 수정하는 것으로 생각하고 MainThread에서 호출해도 되겠구나 생각하면 됨
2. Unfinished Observable
- UI 객체에 만들어둔 subscribe는 complted가 되지 않고 동작하지 않을 때는 대기하며 유지된다.
- 만약 여기서 self요소를 쓰게 된다면 referenced count가 증가되고 네비게이션컨트롤러에 의해 화면이 전환되어도 해제되지 않는다.
- 이럴경우 DisPoseBag도 사라지지 않게 되어 메모리 릭이 발생한다
1) 해결방법 (1)
- weak를 사용해서 참조되지 않을 때 자연스럽게 사라질 수 있도록 구현한다.
idValid.subscribe(onNext: { [weak self] in self?.idValidView.isHidden = $0})
.disposed(by: disposeBag)
2) 해결방법 (2)
- viewWillDisappear에서 disposeBag을 초기화해준다.
override func viewWillDisappear(_ animated: Bool) {
disposeBag = DisposeBag()
}
'앱 개발자 역량 > IOS' 카테고리의 다른 글
Swift ] Webview에서 사진, 카메라 사용하기 (0) | 2019.07.29 |
---|---|
RxSwift ] 7. Subject, 바인딩 (0) | 2019.07.22 |
RxSwift ] 6. UI에 적용하기 (0) | 2019.07.22 |
RxSwift ] 5. Scheduler, Side Effect (0) | 2019.07.19 |
RxSwift ] 4. 다양한 operator 확인 방법 (0) | 2019.07.16 |