[iOS/Swift] RxSwift 기본 개념
2023. 3. 5. 22:46ㆍiOS/Library
728x90
반응형
👉 RxSwift 란?
‘RxSwift is a library for composing asynchronous and event-based code by using observable sequences and functional style operators, allowing for parameterized execution via schedulers.
By Marin Todorov. ‘RxSwift — Reactive Programming with Swift.’
- 관찰 가능한 시퀀스와 함수 스타일 연산자를 사용하여 비동기 및 이벤트 기반 코드를 구성하는 라이브러리이다.
- 새로운 데이터에 반응하며 순차적으로 처리하게 함으로써 비동기 프로그램을 쉽게 하도록 도와준다.
✔️ RxSwift 사용하는 이유 ?
- 비동기한 작업을 간결하게 사용가능하다.
- 애플에서 비동기 코드를 작성하기 위한 API(NotificationCenter, Delegate Pattern, GCD, Closuer) 를 제공하고 있지만 이러한 것들을 복합적으로 사용할 수 있게 해준다.
👉 RxSwift 3 요소
1. Observable
- Observable을 통해 값을 반환하고 이 값으로 반응을 처리한다.
- UI를 업데이트하거나 들어오는 데 데이터를 처리하고 활용할 수 있다.
- 객체 이벤트, 값을 추가하거나 수정하는 것과 같은 기능을 할 수 있다.
✔️ Observable 이벤트
next
: 다음 값을 전송하는 이벤트error
: Observable 이 값을 반환할 때 에러가 발생하면 error 를 반환하고 종료시키는 이벤트complete
: 성공적으로 이벤트 시퀀스를 종료하는 이벤트
cancelable = loadImage(url: IMAGEURL)
.observe(on: MainScheduler.instance)
.subscribe(
onNext: { data in
self.imageView.image = data
}, onError: { error in
}, onCompleted: {
})
- onNext : 웹이미지를 다운받아 데이터로 저장한다. -> imageView로 뿌려준다
- onError : error 발생했을 때 로그를 처리할 수 있다.
- onCompleted : 웹이미지를 다운받고 완료되었을 때 이벤트를 처리한다.
2. Operators
- ObservableType과 Observable 클래스에는 복잡한 논리를 구현하기 위해 많은 메소드가 포함되어 있다. 이 메소드들을 Operator라고 부른다.
- Operator 는 비동기 입력을 받아 출력만 생성하기 때문에 Operator들끼리 쉽게 혼합해서 사용이 가능하다.
- RxOperators 들은 Observable에 의해 들어온 값들을 처리하고 최종값이 나올 때 방출한다.
3. Schedulers
- 함수를 실행하는 Thread(쓰레드)를 결정해주는 역할을 한다.
- 보통 변화시키는 함수는 Main Thread(메인 쓰레드)에서 실행이 되고 API를 통해 데이터를 가져오거나 연산 등을 하는 함수는 Background 에서 실행을 시킨다.
- 애플에서 제공하는 DispatchQueue 보다 더 쉽게 처리할 수 있다.
- RxSwift는 여러가지의 스케줄러가 이미 정의되어 있어서 개발자가 따로 스케줄러를 생성할 일이 없다.
👉 RxCocoa 란?
- UIKit 및 Cocoa 개발을 지원하는 클래스를 보유하고 있는 RxSwift 동반 라이브러리이다.
- 다양한 UI 구성요소에 대한 reactive extensions 기능을 추가하여 이벤트를 추가할 수 있다.
✔️ 설치 방법
# Podfile
use_frameworks!
target 'YOUR_TARGET_NAME' do
pod 'RxSwift', '6.5.0'
pod 'RxCocoa', '6.5.0'
end
[참고자료]
https://github.com/ReactiveX/RxSwift
728x90
반응형
'iOS > Library' 카테고리의 다른 글
[iOS/Swift] pod 설치방법 (0) | 2023.02.28 |
---|