iOS/RxSwift

RxSwift 4시간만에 끝내기(곰튀김님 강의 듣고 정리) [시즌2]

Developer-Michelle 2023. 1. 12. 09:55

RxSwift 란?

비동기로 생기는 결과값을 컴플리션 형태가 아닌 리턴값으로 나타내기 위해 쓰는 유틸리티

(URLSession 이나 Alamofire에서 completion 에 나타나는 코드들이 너무 길어서 깔끔하게 쓰고 싶었던 적이 많았을 것이다)

 

사용 방법에는 2가지가 있다.

1) create - 비동기로 생기는 데이터를 Observable로 감싸서 처리하는 방법

2) subscribe - Observable로 오는 데이터를 받아서 처리하는 방법

 

*한 번 생성된 Observable이 disposed 되면 다시 사용 불가. 새로 만들어주어야 함.

 

*위에처럼 RxSwift를 쓰다가 너무 길어져서 이걸 짧게 줄이고 코드를 간결하게 쓰고 싶기에 나온 애들이 SugarAPI.

SugarAPI 는 operator 들이라고 할 수 있다. 예를 들면, observeOn, map, filter 등

 

Observable ---> Operator ---> Subscribe

Observable에서 subscribe 로 데이터가 전달되는 중간에 데이터를 바꿔치기하는 애 = operator

 

subscribe의 결과로 나오는게 disposable

disposable은 평소에는 딱히 신경쓸 필요가 없다가, 명확하게 취소시키고 싶을 때 사용

 

Observable의 생명주기: create -> subscribe -> onNext(데이터전달)/onError -> disposed

이 때 subscribe 되는 시점부터가 실행시점임. create부터가 아님.

(만든다고 해서 실행이 아니라 urlsession 코드 떠올려보면 completion 부분 대신 subscribe 한다고 생각하면 됨)

 


Operator 예시

 

-observeOn : down stream 쓰레드를 바꾼다

-subscribeOn: up stream thread를 바꾼다


Subject: 이미 만들어진 Observable 바깥에서 데이터를 컨트롤해서 새로운 값을 만들어줄 수 있다.

(테이블뷰에 있는 튀김 여러개 order 할 때마다 10,000 + 500원 + 500원 .... 추가하는거 떠올리기)

 

위 요약은 아래 유튜브를 보고 정리한 내용입니다.

https://youtu.be/iHKBNYMWd5I