본문 바로가기
Mobile/Swift

[Swift] RxSwift

by 펭귄알 2022. 11. 7.

 

 

RxSwift의 정의

Rx 구현과 마찬가지로 RxSwift의 의도는 비동기 작업과 Observable이러한 비동기 작업 조각을 변환하고 구성하는 메서드 모음 및 개체 형태의 데이터 스트림을 쉽게 구성할 수 있도록 하는 것입니다.

RxSwift는 SPM, CocoaPods 둘 다 지원한다. 나는 SPM으로 설치를했다.

RxSwift의 구조이해

RxSwift : RxSwift의 핵심으로서 ReactiveX 에 의해 정의된 (대부분) Rx 표준을 제공합니다 . 다른 종속성이 없습니다.
RxCocoa : 공유 시퀀스, 특성 등과 같은 일반적인 iOS/macOS/watchOS 및 tvOS 앱 개발을 위한 Cocoa 전용 기능을 제공합니다. RxSwift및 에 따라 다릅니다 RxRelay.
RxRelay : 및 PublishRelay, Subjects 주위 에 3개의 간단한 래퍼를 제공합니다 . 에 따라 다릅니다 .BehaviorRelayReplayRelayRxSwift
RxTest 및 RxBlocking : Rx 기반 시스템에 대한 테스트 기능을 제공합니다. 에 따라 다릅니다

RxSwift를 통해 비동기프로그래밍을 처리할 수 있다고 하는데, 버튼이벤트, 텍스트필드에서 입력값을 통해 바로바로 결과가 나오는것들 현재 실제 서비스되고 있는 어플리케이션에 적용된 것들을 구현하려고 하니 꼭 필요하다고 생각이들었다.

나는 주로 TextField유효성 검사, 데이티를 TableView, Collectionview에서 바로 구독(bind) 할 때 주로 사용하는거 같다.

그리고 MVVM 디자인 패턴과 밀접한 관련이 있어 요즘 핫 한 디자인 패턴을 이용하는데 유리하다.

RxSwift의 주요 요소

Observerbles

객체에 이벤트나 값 추가, 수정등과 같은 것을 가능하게끔 해줌

  • event종류: next event, completed event, error event

event의 결과에 따라 값 처리를 유용하게 할 수 있다.

ViewModel.getData()
  .subscribe(onNext: { data in
    // Append data to temporary file
  },
  onError: { error in
    // Display error to user
  },
  onCompleted: {
    // Use downloaded file
  })

Operators

UIDevice.rx.orientation
  .filter { value in
    return value != .landscape
  }
  .map { _ in
    return "Portrait is the best!"
  }
  .subscribe(onNext: { string in
    showAlert(text: string)
  })

Schedulers

DispatchQueue에서 사용하는 기능과 같다. 어떤 쓰레드에서 처리할지 정의한다.

 

함수형 프로그래밍에서 변수는 다양한 오류를 가져올 수 있는 요인이기 때문에, 내장함수(map,filter)등을 이용해 연산을 처리해서 보다 

직관적이고, 오류 발생의 위험을 줄여나갈 수 있으며 내장함수를 이용하기때문에 선언형 프로그래밍의 개념까지 적용시킬 수 있다.

 

RxSwift의 이해가 부족하지만 좀 더 공부를 해서 발전된 모습으로 와서 설명글을 작성해보도록하겠습니다.

 

 

참조 : https://ios-development.tistory.com/m/95

'Mobile > Swift' 카테고리의 다른 글

[SwiftUI] SwiftUI 문서 찍먹하기  (0) 2024.11.11
[Swift] Singleton Pattern 뽀개기  (0) 2022.11.07
Optional 뽀개기  (0) 2022.11.06