클로저를 매개 변수 중 하나로 사용하는 함수를 선언할 때 매개 변수 유형 앞에 @escaping을 작성하여 클로저가 탈출하도록 나타낼 수 있습니다. 클로저가 탈출하는 방법 중 하나는 변수에 저장하는 것입니다. 예를 들어 비동기 작업을 시작하는 많은 함수는 클로저 인수를 completion handler로 사용합니다. 함수는 작업을 시작하고 나서 return하지만 그 클로저는 작업이 완료되기 전까지 불리지 않습니다. 그 클로저는 탈출해야 하고 나중에 호출돼야 합니다. 아래 예시를 많이 봤을 겁니다. var completionHandlers: [() -> Void] = [] func someFunctionWithEscapingClosure(completionHandler: @escaping () -> Voi..
toArray let disposeBag = DisposeBag() Observable.of(1, 2, 3, 4, 5) .toArray() .subscribe({ print($0) }).disposed(by: disposeBag) //success([1, 2, 3, 4, 5]) toArray는 배열로 만들어줍니다. Map let disposeBag = DisposeBag() Observable.of(1, 2, 3, 4, 5) .map { $0 * 2 } .subscribe(onNext: { print($0) }).disposed(by: disposeBag) //2 //4 //6 //8 //10 Map은 새로운 이벤트로 변경해줍니다. 예시 self.myTextField.rx.controlEvent(.edi..
Subject와 Relay Subject는 Observable이면서 Observer일 수 있습니다. 데이터를 방출하고(emit) 읽을(subscribe) 수 있습니다. Relay는 RxCocoa를 import해서 씁니다. cocoa가 붙은 것으로 알 수 있듯이 UI를 위해 만들어졌습니다. Relay는 error와 complete가 없고 dispose할 때까지 종료되지 않습니다.. UI 이벤트를 처리하기 때문입니다. PublishSubject let disposeBag = DisposeBag() let subject = PublishSubject() subject.onNext("1") subject.subscribe { event in print(event) } subject.onNext("2") subj..
Observable ReactiveX에서 옵저버는 Observable을 구독한다. Obseravable이 배출하는 하나 또는 연속된 항목에 옵저버는 반응한다. 이러한 패턴은 동시성 연산을 가능하게 한다. 그 이유는 Observable이 객체를 배출할 때까지 기다릴 필요 없이 어떤 객체가 배출되면 그 시점을 감시하는 관찰자를 옵저버 안에 두고 그 관찰자를 통해 배출 알림을 받으면 되기 때문이다. 출처 : reactivex.io/documentation/ko/observable.html Observable은 '관측가능한' 객체를 말합니다. Observable이 어떤 값을 방출하면 옵저버가 그 값을 확인하는 것 입니다. Just let observable1 = Observable.just(1) observab..