Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- scrolling tab
- swift
- Side Menu
- DevelopmentRegion
- swift #swift keychain #keychain 사용법
- 개발자 면접
- detect url
- pod install
- UIPresentationController
- transformation.map
- notifychanged
- 스크롤 탭
- UIViewControllerTransitioningDelegate
- url 관찰
- convert base64
- List
- 상단 탭바
- ViewBuilder
- oberve url
- DataBinding
- Android
- Swift Package Manager
- 기존 앱
- SwiftUI
- url 추적
- ios
- GeometryReader
- Tuist
- base64 변환
- development language
Archives
- Today
- Total
버그 잡이
RxSwift - bind() 말고 drive()를 써보는건 어때요? 본문
bind() 와 driver() 모두 UI 관련된 Observable 구독을 하기 위한 operator입니다.
둘 다 error 이벤트를 받지 않는다 는 특성이 있어 UI 바인딩에 적합 합니다.
bind(to: ) 의 단점
result 라는 Observable이 있고
이를 bind()로 구독하는 세 개의 Observer가 있다고 가정해봅시다.
observer1
observer2
observer3
...
각각의 Observer가 추가될때마다 새로운 스트림이 실행됩니다.
즉, Observable을 구독하는 옵저버가 늘때마다 스트림도 같이 느는 것입니다.
하나의 스트림을 공유해서 같이 쓴다면 참 좋을텐데 불필요하게 낭비되는 리소스가 생기는 것 입니다.
driver의 장점
driver는 스트림 공유를 가능하게 해줍니다.
즉, driver 객체를 구독하는 옵저버가 늘때마다 스트림도 같이 느는 것이 아니라
스트림은 하나로 유지되고 이를 같이 구독(공유)해서 각자의 작업을 하는 것입니다.
그리고 .asDriver() 객체는 driver로 스트림을 받는데
driver 는 기본적으로 Main-Thread로 스케쥴러가 지정되어 있기 때문에 UI layer에서 활용하기 좋습니다.
정리
1. driver는 스트림을 공유할 수 있어 불필요한 리소스 낭비를 예방할 수 있다.
2. driver는 main-thread에서의 실행을 보장해준다.
반응형
'RxSwift' 카테고리의 다른 글
RxSwift - subscribe시 onNext를 명시해줘야 하는 이유 (0) | 2020.10.26 |
---|---|
RxSwift - Dispose & DisposeBag (0) | 2020.10.01 |
RxSwift로 tableView 구현하기 (0) | 2020.09.20 |
RxSwift - tap으로 addTarget을 대체해보자. (1) | 2020.09.17 |
RxSwift - 버튼 활성화 상태 제어하기 #CombineLatest #Binding (0) | 2020.09.16 |
Comments