RxSwift
-
RxSwift 를 사용하는 이유, 선언적 프로그래밍에 대해 (+선언적 UI)RxSwift 2021. 12. 16. 15:57
Let us Go 2017 가을 행사 https://www.youtube.com/watch?v=cXi_CmZuBgg 를 보고 정리 겸 공부 하기 위해 작성하는 글 입니다. (모든 출처 곰튀김님 감사합니다) Programming : input 으로 output을 만들어 낸다 우리의 개발 패러다임은 Low Memory 시대에서 -> High Memory 시대가 되면서 변화하고 있다. 그러면서 data : program = 1:1 이 아니게 된다. data를 여러곳에서 write를 하게 되는셈이된다. async 가 제일 먼저 생각날텐데 전역변수로 선언되어있는 데이터의 값이 여러곳에 의해 변경될 여지가 있다. 따라서 Immutable 변수를 제공해주는것이다. 데이터 공유를 위해 동시에 쓰지 못하게 하는거지! 그..
-
Combine vs RxSwiftRxSwift 2021. 12. 13. 11:12
https://tv.naver.com/v/19397553 RxSwift, Combine 둘 중에 어느 것을 공부해야 할까요 NAVER Engineering | 발표자: 김용수 (NAVER) 발표월: 2021.03. 개요 RxSwift와 Combine이 그렇게 비슷하다는데, 지금 타이밍에 어느 것을 공부하는 것이 좋을지? 에 대하여 얘기를 나누어 보았습니다. tv.naver.com 정답이 없는 얘기지만 위 영상을 보고 생각하기 현업에 도입하기에 가장 중요한점 : + SwiftUI도 최소버전이 ios13임 iOS 13 최소버전이 되는지 아래 Combine 예제를 보면 Rx와 매우 흡사하고 개념도 비슷하다는걸 알 수 있다. let eventProvider = MoyaProvider() eventProvider..
-
RxSwift Error HandlingRxSwift 2021. 8. 10. 16:54
보통 에러가 전달되면 그 뒤 next가 전달되지 않음. (구독이 종료되기때문) 그러면 네트워크 에러 -> UI Update (Next Completed) 가 전달되지 않는 문제가 생길 수 있다. 이를 위해서 두가지로 해결 가능하다. 1. catchError 를 통해 새로운 Observable를 리턴하기 2. retry를 통해 Error를 재시도 (무한정/ 갯수 제한) -> Observable catchError Operator // 네트워크 요청을 구현할때 자주 사용 // 올바른 응답을 받지 못했을때 local cache를 사용하거나 등등으로 활용 가능 let bag = DisposeBag() let MyError: Error { case error } let subject = PublisthSubjec..
-
SchedulerRxSwift 2021. 8. 10. 15:41
Scheduler 간단 개념 우리가 아는 GCD의 개념과 유사하다. Cocoa -> GCD RxSwift -> Scehduler Scheduler 는 Thread/ Dispatch Queue/ Operation Queue 가 모두 될 수 있다. 하나의 Thread에 두개의 Scheduler가 있을수도, 하나의 Scheduler에 두개의 Thread가 연결되어 있을 수 있다. Global Queue = Background Scheduler Serial Scheduler Concurrent Scheduler 기본 : CurrentThreadScheduler(미 지정시) ConcurrentDispatchQueueScheduler MainScheduler = Main Thread OperationQueueSch..
-
Combining OperatorsRxSwift 2021. 8. 6. 17:13
startWith Operator let bag = DisposeBag() let numbers = [1,2,3,4,5] Observable.from(numbers) .startWith(0) // .startWith(-1, -2) .subscribe{ print($0) } .disposed(by: bag) // 주로 기본값 저장할때 사용함 // 연산자라고 보면됨 // next(0) ~ (5) 까지 방출됨 // 주석 해제하면 -2부터 나옴 concat Operatoer let bag = DisposeBag() let numbers = Observable.from([1,2,3,4,5]) let numbers2 = Observable.from([1,2,3,4,5]) Observable.concat([numbe..
-
Transforming OperatorsRxSwift 2021. 8. 5. 14:58
toArray Operator map Operator flatMap, flatMapFirst, flatMapLatest Operator https://kkimin.tistory.com/40?category=955083 자주 쓰여 따로 정리해 두었다. let disposeBag = DisposeBag() let a = BehaviorSubject(value: 1) let b = BehaviorSubject(value: 2) let subject = PublishSubject() subject .flatMap { $0.asObservable() } // subject to Observable .subscrie { print($0) } .dispose(by: disposeBag) subject.onNext(a..
-
RxSwift ObservableRxSwift 2021. 7. 14. 16:16
http://reactivex.io/documentation/ko/observable.html observable = observable sequence = sequence: 각각의 단어를 계속 보게 될 것인데 이는 곧 다 같은 말이다. (Everything is a sequence) 중요한 것은 이 모든 것들이 비동기적(asynchronous)이라는 것. Observable 들은 일정 기간 동안 계속해서 이벤트를 생성하며, 이러한 과정을 보통 emitting(방출)이라고 표현한다. 각각의 이벤트들은 숫자나, 인스턴스 같은 값을 가지거나, 탭과 같은 제스처를 인식할 수도 있다. 기본적으로 아래와 같다. public enum Event { /// Next elemet is produced. case nex..