본문 바로가기
반응형

iOS/RxSwift19

[RxSwift] Create Operators [2] repeatElement 동일한 요소를 반복적으로 방출하는 옵저버를 생성 while과 비슷, 고로 방출되는 요소의 갯수 꼭 제한해야함 -> 아니면 무한으로 쭈욱 방출 take연산을 이용해 갯수 제한 Observable.repeatElement(element) .take(7) .subscribe { print($0) } .disposed( by: disposebag) deferred 특정 조건에 따라 옵저버블을 생성할 수 있다. if문 사용가능 즉시 옵저버블을 생성하는 create와 달리 구독을 해줘야 옵저버블이 생기기 때문에, 당장은 필요하지 않지만 필요한 상황에 구독하여 생성할 수 있다 네트워크 API에서 결과를 받아와 just처럼 옵저버블을 바로 만들어 주는 경우도 있지만, deferred를 통해 구.. 2023. 10. 30.
[RxSwift] Create Operators [1] just, of, from just : 하나의 항목을 방출하는 Observable을 생성 ObservableTypeProtocol에 타입메서드로 선언되어있다. 파라미터로 하나의 요소를 받고 Observable로 리턴 파라미터로 전달된 요소를 그대로 방출! let element = "jife" Observable.just(element) .subcribe { event in print(event) } .disposed( by: disposebag) //next(jife) //completed //출력값 Observable.just([1,2,3]) .subcribe { event in print(event) } .disposed( by: disposebag) //next([1,2,3]) //completed.. 2023. 10. 29.
[RxSwift] Relay Relay Relay는 Subject와 유사한 특징을 갖고있으며, 내부에 Subject를 맵핑하고있다. Relay는 RxCocoa에서 제공하는 기능이다. Subject와 유사하게 이벤트를 받아 구독자에게 전달한다. 차이점은 Next 이벤트만 전달한다. completed와 error는 받지도, 전달하지도 않는다. 구독자가 dispose되기 전까지, 계속 이벤트를 처리한다. 그래서 주로UI이벤트에 많이 사용된다. Relay에게 전달할때는 accept 를 사용 PublishRelay 빈 생성자로 PublishSubject와 동일하게 생성한다. 아래처럼 동일하게 구독하고 이벤트를 전달하면 된다. let pr = PublishRelay() pr.subscribe { print("1: \($0)") } dispo.. 2023. 10. 29.
[RxSwift] Subject Subject Subject를 이해하기위해서는 Observable과 Observer를 먼저 이해야한다. Subject는 Observable인 동시에, Observer이다. Observable는 다른 Observable를 구독 못함, Observer 또한 이벤트를 다른 Observer에 전달 못함 반면, Subject는 다른 Observable로 부터 이벤트를 전달받아, 구독 가능 PublishSubject 빈 상태로 생성되고, 새로운 element가 subscribe 이후의 event만 subscriber에게 전달된다. BehaviorSubject PublishSubject와 달리 기본값을 가진 채로 생성되고, 초기값 혹은 최신 element 값을 방출한다. ReplaySubject 정해진 buffer .. 2023. 10. 29.
[RxSwift] Disposable var disposebag = DisposeBag() Disposable 리소스를 해체하고, 이벤트 구독을 중지하는것 리소스 낭비방지와 불필요한 이벤트 수신을 하지 않기 위해서 사용 Observable.from([1,2,3]).subscribe(onNext: { elem in print("Next",elem) },onError: {error in print("에러:",error) }, onCompleted: { print("Completed") }, onDisposed: { print("Disposed") } ) //-------------- Observable.from([1,2,3]).subscribe{ print($0) } 두번째는 왜 리소스 해체가 되지 않은걸까? 그 이유는 onDisposed는 O.. 2023. 9. 14.
[RxSwift] Observable Observable.create{ (observer) -> Disposable in observer.on(.next(0)) observer.onNext(1) observer.onCompleted() return Disposables.create() } Observable, Observer, Subsribe Observable은 이벤트를 전달 Observer는 Observable를 감시하고 있다가 전달되는 이벤트를 처리 Observable를 감시하는 것을 Subsribe라 표현(구독한다) Observable은 3가지 이벤트를 전달 Next : 새로운 항목이 방출될 때 마다, Next클로저 호출 이때, 방출된 항목은 클로저의 파라미터로 받는다. Completed : 이벤트가 종료되었을 때, 옵저버에게 이벤트.. 2023. 9. 14.
반응형