[iOS/Swift] RxSwift 기본 개념

2023. 3. 5. 22:46SWIFT/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

 

GitHub - ReactiveX/RxSwift: Reactive Programming in Swift

Reactive Programming in Swift. Contribute to ReactiveX/RxSwift development by creating an account on GitHub.

github.com

 

 

 

 

 

728x90
반응형

'SWIFT > Library' 카테고리의 다른 글

[iOS/Swift] pod 설치방법  (0) 2023.02.28