[RxSwift] Button rx.tap
2025. 1. 9. 21:59ㆍiOS
반응형
RxSwift에서 rx.tap은 기본적으로 UI 이벤트이기 때문에 메인 스레드에서 실행됩니다. 따라서 selectButton.rx.tap.bind 코드는 별도의 스케줄러를 지정하지 않으면 기본적으로 메인 스레드에서 실행됩니다.
이유
- UI 관련 작업은 반드시 메인 스레드에서 실행되어야 하며, RxCocoa는 이를 보장합니다.
- rx.tap은 ControlEvent 타입이고, 이 이벤트는 기본적으로 메인 스레드에서 동작하도록 설계되어 있습니다.
참고 코드
selectButton.rx.tap
.bind {
// 이 블록 내부는 기본적으로 메인 스레드에서 실행됨
print("Button tapped")
}
.disposed(by: disposeBag)
만약 백그라운드 스레드에서 동작하도록 변경하려면 observeOn을 사용하여 스케줄러를 지정할 수 있습니다:
selectButton.rx.tap
.observeOn(ConcurrentDispatchQueueScheduler(qos: .background))
.bind {
// 이 블록은 백그라운드 스레드에서 실행됨
print("Button tapped on background thread")
}
.disposed(by: disposeBag)
결론
rx.tap.bind는 별도의 스케줄러를 지정하지 않으면 기본적으로 메인 스레드에서 실행됩니다.
UI 관련 작업은 그대로 두는 것이 권장됩니다.
반응형
'iOS' 카테고리의 다른 글
[API] UnexpectedRollbackException 500 Error (1) | 2025.01.10 |
---|---|
[RxSwift] zip, combineLate (2) | 2025.01.09 |
iOS Universal Links (유니버셜 링크) (2) | 2025.01.09 |
구글로그인 해제 (0) | 2025.01.09 |
애플로그인 계정 연동해제 (0) | 2025.01.09 |