RxSwift(9) - Scheduler
·
반응형프로그래밍
🧐Scheduelr?Swift에서 멀티스레딩은 주로 GCD를 통해 처리합니다. 반면 RxSwift에서는 Scheduelr라는 추상화된 개념을 사용합니다.하지만 scheduler != threadScheduler와 쓰레드 관계하나의 쓰레드에 여러개의 스케쥴러가 존재할 수 있고여러개의 쓰레드에 하나의 스케쥴러가 존재할 수 있습니다.Scheduler종류CurrentThreadScheduelrpublic class CurrentThreadScheduler : ImmediateSchedulerType { public static let instance = CurrentThreadScheduler()}: 기본 스케쥴러로, Serial Schduler로 동작합니다. MainSchedulerpublic fina..
RxSwift(8)-에러처리
·
반응형프로그래밍
에러와 Observable 존재Observable에서 에러가 발생하면 해당 시퀀스는 즉시 종료됩니다.// 에러 발생 시 Observable의 동작someObservable .subscribe( onNext: { value in print("값: \(value)") }, onError: { error in print("에러 발생: \(error)") // 이 시점에서 Observable은 종료됨 }, onCompleted: { print("완료") // 에러 발생 시 이 부분은 실행되지 않음 } )실무에서 흔히 발생하는 에러 상황은 뭐가 있을까..
RxSwift(7)-BehaviorRelay
·
반응형프로그래밍
BehaviorSubjecthttps://codeisfuture.tistory.com/125 RxSwift(2)-Subject1. Subject란?RxSwift에서 Subject는 Observable과 Observer의 특성을 모두 갖춘 하이브리드 요소입니다. Observable처럼 값을 방출할 수 있으며, 동시에 Observer처럼 다른 Observable을 구독할 수도 있습니다.흠...codeisfuture.tistory.com를 기억하시는가??? 아주 초반에 공부했던것이다. combine의 CurrentValueSubject와 비슷한 것으로 초기값을 가지고 구독시 최신 값을 즉시 수신하고 onNext, onError, onCompleted호출이 가능했다. BehaviorRelayBehaviorRel..
RxSwift(6)-RxCocoa(bind, drive, DelegateProxy)
·
반응형프로그래밍
RxCocoa?iOS, macOS 등 모두에 적용이 가능한 프레임워크로, Cocoa 프레임워크 위에서 관련 기능들을 모두 구현할 수 있습니다.즉 RxSwift = 반응형 프로그래밍의 기본 개념과 연산자 제공?RxCocoa = 이를 UIkit 컴포넌트들과 자연스럽게 통합할 수 있게 해줍니다.RxCocoa는 UIKit 컴포넌트들에 rx 네임스페이스를 제공하여 반응형 확장을 가능하게 합니다. 예를 들어 textField.rx.text나 button.rx.tap과 같은 방식으로 UI 이벤트를 Observable 스트림으로 변환할 수 있습니다.🔄 반응형 프로그래밍의 기본: subscribeRxCocoa의 바인딩 개념을 이해하기 전에, 기존 RxSwift의 기본적인 이벤트 구독 방식을 복습해보겠습니다.observ..
RxSwift(5)-TimeBasedOperators
·
반응형프로그래밍
Buffering Operators시간 기반 작업을 할 때 가장 자주 마주치는 문제가 바로 "이벤트를 어떻게 모아서 처리할까?"인데요.사용자가 버튼을 연타한다거나, API 호출을 너무 자주 하게 되는 상황을 생각해보시면 이해가 쉬울 거예요.Replay(_:)Replay는 새로운 구독자에게 과거에 방출된 이벤트들을 다시 전달해주는 연산자입니다. 왜 이게 필요할까요?예를 들어 사용자가 앱에서 로그인을 했는데, 로그인 상태를 여러 화면에서 동시에 참조해야 하는 상황을 생각해보세요.로그인 Observable이 이미 성공 이벤트를 방출했다면, 나중에 구독하는 화면들은 그 정보를 받을 수 없겠죠?// 마지막 2개의 이벤트를 새 구독자에게 전달let replayedObservable = Observable.inter..
RxSwift(3)-Filtering Operators & TransForming Operators
·
반응형프로그래밍
next 이벤트를 통해 넘어온 값들에 대해 필터를 해줘 해당 오퍼레이터를 통해 넘어온 값들에 대해 다 처리하지 않고 원하는 값만 골라 처리할 수 있어지는 기능에 대해 살펴보겟습니다이것도 4가지 종류가 있습니다.. 자주 나오는것 같다 4.4..1. Ignoring OperatorignoreElement()값들이 방출되어도 무시되고 스트림에 등록되지 않는다. 하지만 error나 completed는 무시하지 않습니다.example(of: "ignoreElements") { // 1 let strikes = PublishSubject() let disposeBag = DisposeBag()// 2 strikes .ignoreElements() .subscribe { _ in print..
RxSwift(2)-Subject
·
반응형프로그래밍
1. Subject란?RxSwift에서 Subject는 Observable과 Observer의 특성을 모두 갖춘 하이브리드 요소입니다. Observable처럼 값을 방출할 수 있으며, 동시에 Observer처럼 다른 Observable을 구독할 수도 있습니다.흠... 그니까 양방향이라고 생각하면된다. Observer로서: onNext(_:), onError(_:), onCompleted() 메서드를 호출하여 값을 수신Observable로서: 구독자들에게 값을 방출하고 이벤트 전달Subject가 필요한 이유?1. 이벤트 브릿징: 명령형코드와 반응형 코드 사이의 연결고리(너와 나의 연결 고리)2. 멀티캐스팅: 하나의 Observable 실행 결과를 여러 구독자에게 공유3. 상태 관리: UI상태나 앱 상태를 ..