본문 바로가기

iOS/RxSwift9

RxSwift background knowledge 1. RxSwift 또는 Reactive Extension의 히스토리 (Functional Reactive Programming: FRP) 1997 1997년 Functional Reactive Animation을 만들기 위해 개념이 고안됨 animation을 DSL 언어로 설명하고자 하는 목표가 있었음 animation의 움직임을 벡터화 하여 렌더링 타임에 샘플링을 완료할 수 있는 성능을 가짐 (60images/second) 예시는 jonaschapuis.com/wp-content/uploads/2017/09/ReactiveProgrammingOriginsAndEcosystem.pdf 슬라이드 참조 2009 에릭마이어가 FRP개념을 바탕으로 MS .NET의 Reactive Extension을 개발 20.. 2021. 3. 25.
RxSwift: Observable & Subject in practice View Controller 에 Disposebag과 BehaviorRelay를 선언 Disposebag를 사용하면 View Controller가 deallocation 할 때 같이 subscriptions들이 dispose되서 memory management 가 편하다. *하지만 rootview 인 경우 앱이 종료되기 전까지 deallocation 하지 않으니 주의하자 private let bag = DisposeBag() private let images = BehaviorRelay(value: []) + 버튼을 누를 때 마다 사진을 들고와 기존 사진과 콜라쥬 한다. 즉 이전에 선언한 images (BehaviorRelay) 에 추가한다. UI 에 관련되었기 non-terminating sequenc.. 2020. 7. 13.
RxSwift: Subjects Subjects observable 을 만들고 subscribe를 하고 작업이 끝난 뒤 dispose 하는 것 까지 배워봤다. 앱을 개발할 때 runtime동안 하나씩 새로운 값을 obervable에 추가하고 subscriber에 에 emit 하는 동작은 자주 쓰인다. 그래서 이걸 쉽게 하기 위해 Observable 과 Observer 둘의 역할을 동시에 할 수 있는 Subject가 생겼다. Create Subjects Subject를 만들고 Subscribe를 한 뒤에 추가되는 값들을 받아올 수 있다. func createSubject(){ let subject = PublishSubject() subject.onNext("Is anyone listening?") let subscriptionOne =.. 2020. 7. 10.
RxSwift: Observable Observable 만들기 기본적으로 observable 은 subscribe 하지 않으면 동작하지 않는다. subscribe 를 하면 element 가 하나씩 emit 되며 마지막에 completed 로 마무리 된다. just: 하나의 항목을 추가한다. of: single element로다 집어 넣는다. from: individual elements from an array of typed elements func createObservable() { let one = 1 let two = 2 let three = 3 let observable = Observable.just(one) let observable2 = Observable.of(one,two,three) let observable3 = O.. 2020. 7. 9.
RxSwift: Hello RxSwift!🖐 What is RxSwift? library for composing asynchronous and event-based code by using observable sequences and functional style operators, allowing for parameterized execution via schedulers simplifies developing asynchronous programs by allowing your code to react to new data and process in a sequential, isolated manner 왜 RxSwift 가 필요한가 parallel 한 코드를 작성하는 건 원래 힘들지만 특히 같은 데이터를 이용하는 병렬 코드를 작성하는건 정말 .. 2020. 7. 8.
RxSwift를 사용한 비동기 프로그래밍 #4 [마지막] https://github.com/iamchiwon iamchiwon - Overview https://iamchiwon.github.io http://www.makecube.in - iamchiwon github.com 자 서버가 개발되고 JSON 이 온다! 이제 서버에 맞게 바꿔야한다. 서버의 데이터를 ViewModel 에 맞게 컨버팅 해주는 작업이 필요하다. fetching 하는 레거시 코드를 가지고 있다. class APIService { static func fetchAllMenus(onComplete: @escaping (Result) -> Void) { URLSession.shared.dataTask(with: URL(string: MenuUrl)!) { data, res, err in if.. 2020. 6. 3.
RxSwift를 사용한 비동기 프로그래밍 #3 https://github.com/iamchiwon iamchiwon - Overview https://iamchiwon.github.io http://www.makecube.in - iamchiwon github.com 기획서만 나오고 디자인과 백엔드가 나오기 전에 개발해보자 [기획내용] 메뉴 + - count 요소 메뉴에는 이름과 가격이 있다. clear 로 전부 취소할 수 있다. 전체 가격을 표시할 수 있다. 등등 1. ViewModel 을 만든다. import Foundation // View를 위한 모델 : ViewModel struct Menu { var name : String var price : Int var count : Int } 2. TableVIew 에 ViewModel 을 집어넣.. 2020. 5. 29.
RxSwift를 사용한 비동기 프로그래밍 #2 iamchiwon/RxSwift_In_4_Hours RxSwift, 4시간 안에 빠르게 익혀 실무에 사용하기. Contribute to iamchiwon/RxSwift_In_4_Hours development by creating an account on GitHub. github.com [2교시] RxSwift 활용하기 - 쓰레드의 활용과 메모리 관리 Stream의 분리 및 병합 [merge] ReactiveX - Merge operator RxScala implements this operator as flatten, flattenDelayError, merge, and mergeDelayError. merge takes a second Observable as a parameter and merge.. 2020. 5. 28.
RxSwift를 사용한 비동기 프로그래밍 #1 iamchiwon/RxSwift_In_4_Hours RxSwift, 4시간 안에 빠르게 익혀 실무에 사용하기. Contribute to iamchiwon/RxSwift_In_4_Hours development by creating an account on GitHub. github.com [1교시] 개념잡기 - RxSwift를 사용한 비동기 프로그래밍 textview 에 json 데이터를 띄우는 함수 버튼을 누르면 animation이 실행된다. @IBAction func onLoad() { editView.text = "" setVisibleWithAnimation(activityIndicator, true) let url = URL(string: MEMBER_LIST_URL)! let data = tr.. 2020. 5. 27.