일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Clean Code
- 스위프트
- Human interface guide
- ribs
- uiscrollview
- collectionview
- Observable
- Protocol
- map
- clean architecture
- MVVM
- uitableview
- Xcode
- combine
- rxswift
- SWIFT
- 애니메이션
- 리팩토링
- HIG
- RxCocoa
- swift documentation
- Refactoring
- UITextView
- UICollectionView
- ios
- tableView
- 리펙토링
- 클린 코드
- swiftUI
- 리펙터링
- Today
- Total
목록rxswift (43)
김종권의 iOS 앱 개발 알아가기
RxSwift의 스트림 처리 RxSwift를 사용할 때 보통 Observable 인스턴스를 .subscribe하여 onNext, onError, onCompleted로 처리가 가능 RxSwift는 위에서 아래로 stream 형태로 비동기 처리를 코드상으로는 순서대로 눈에보기 쉽게 처리가 가능 API.download(file: "http://www...") .subscribe(onNext: { data in // Append data to temporary file }, onError: { error in // Display error to user }, onCompleted: { // Use downloaded file }) 이번 포스팅 글에서 RxSwift의 Observable과 Observer 구현부..
사전지식) RxSwift의 GCD 종류 1) main (serial) main thread에서 처리되는 serial queue (모든 UI관련 작업은 해당 큐에서 main queue에서 실행) 2) global (concurrent) 전체 시스템에서 공유되는 concurrent queue이고, concurrent이기 queue끼리의 우선순위를 위해서 queue를 사용할 때 QoS 설정 필요 userInteractive: 유저가 누르면 즉각 반응 (main queue) userInitiated: 유저가 실행시킨 작업들을 즉각적이지는 않지만, async하도록 처리 default utility: I/O, n/w API 호출 background: 유저가 인지하지 못할 정도의 뒷단에서 수행하는 작업 3) 커스텀 ..
Hot Observable과 Cold Observable 개념 hot observable 이벤트를 발행할때 observer가 있든 없든 바로 방출하는 것 여러 observer가 구독해도 모두 같은 데이터를 발행 ex) PublishSubject, BehaviorSubject cold observable 이벤트를 발행할때 observer가 구독했을때 방출하는 것 (observer가 구독하기 전까지는 방출을 안한다고해서 cold라고 표현) 각각의 observer마다 독립적인 데이터 생성하여 발행 ex) just, single, create 코드로 보는 Hot, Cold Observable Observable.create는 cold observable이므로, observer가 구독하는 시점마다 독립적으로 발생..
Single, Completable 차이 Single과 Completable 차이 Single은 onSuccess, onError 두 가지만 존재하고, success에서 값을 같이 방출 Completable은 onCompletable, onError 두 가지만 존재하고, 따로 값을 방출 x 값을 단순히 가져오거나 특정 일을 한 후 반환값이 필요 없는 경우, Single 대신에 Completable을 사용할 것 import UIKit import RxSwift class ViewController: UIViewController { let observable = Observable.create { observer in observer.onNext(10) print("finish") return Dispos..
MainScheduler란? // https://github.com/ReactiveX/RxSwift/blob/25d35f564b95ff4610b78f622c77ec3317aff31c/RxSwift/Schedulers/MainScheduler.swift#L24 Abstracts work that needs to be performed on `DispatchQueue.main`. In case `schedule` methods are called from `DispatchQueue.main`, it will perform action immediately without scheduling. This scheduler is usually used to perform UI work. Main scheduler ..
RxSwift의 Deferred 단어 그대로, deferred 함수에는 파라미터로, Observable을 리턴하는 클로저를 받아서 그 클로저를 내부적으로 저장해놓았다가 해당 Observable이 필요할 때 그 클로저에 접근하여 사용 Observable을 지연시키는 것이 아닌, deferred의 인수로 들어간 클로저안의 동작을 지연시키는 것임을 주의 extension ObservableType { public static func deferred(_ observableFactory: @escaping () throws -> Observable) -> Observable { Deferred(observableFactory: observableFactory) } } ex) Observable을 리턴하는 메소드..
테스트 대상 플러스 버튼을 누르면 1초 이후에 값이 증가하는 앱 테스트: 버튼 누름 -> 1초 후에 값이 변화하는지 확인 샘플 프로젝트에서 사용한 라이브러리 - MVVM을 템플릿화 해놓은 ReactorKit 사용 target 'ExAsyncRx' do use_frameworks! pod 'ReactorKit' pod 'RxCocoa' target 'ExAsyncRxTests' do inherit! :search_paths end end 예제에 사용될 ViewController import UIKit import ReactorKit import RxSwift import RxCocoa class ViewController: UIViewController, ReactorKit.View { private le..
사전 지식 아래 코드에서 1번과 2번 중 subscription 영역과 observing 영역을 구분하면? 1번 - subscription 영역 2번 - observing 영역 Observable .create { observer in // 1. } .subscribe(onNext: { _ in // 2. }) .disposed(by: disposeBag) subscribe(on:)와 observe(on:) subscribe(on:)은 subscription영역에 대한 스레드를 의미 observe(on:)은 observing영역에 대한 스레드를 의미 테스트 메인 스레드에서 아래 코드 호출 subscription영역과 observing영역은 main thread Observable .create { obs..