RxSwift - 1

박인준·2020년 5월 19일
0

RxSwift Starter

목록 보기
1/2

요즘 유행하는 비동기처리 방식 중 하나인 RxSwift를 공부해보려 합니다.
Swift 기본기를 익히며 느낀것 중 하나가 비동기 처리가 어렵다 였는데 RxSwift를 통해 이부분을 쉽고 깔끔한 코드를 작성하며 동시에 MVVM 디자인 패턴도 같이 공부해보려 합니다.

✧ RxSwift 사용이유 ✧

  • RxSwift를 공부할 수 있는 방법은 현재 다양하고 많이 있습니다. 저는 Youtube에 있는 곰튀김님의 강의를 기초로 공부 해보았습니다. (4시간만에 RxSwift 배우기 참고)

  • 강의중 RxSwift를 사용하는 이유에 대해 '비동기적으로 나오는 데이터를 return값으로 전달해주기 위함이다' 라고 하셨습니다. 사용하기 편한 추가적인 기능들도 있겠지만 비동기 데이터 처리를 조금 더 간편하게 사용하는데 있음을 알 수 있었습니다. 물론 RxSwift가 단순히 '비동기 데이터 처리 유틸리티'라고 단정 지을 순 없겠지만 Rx의 강력한 기능중 하나이지 않을까 생각합니다.


RxSwift 사용방법

✦ RxSwift의 사용방법을 크게 2가지로 나눠보면 다음과 같습니다.
1. 비동기로 생기는 데이터를 Observable로 감싸는 return하는 방법
2. Observable로 오는 데이터를 받아서 처리하는 방법


1번을 코드로 작성하면 다음과 같습니다.

☞ 위의 코드와 같이 비동기로 데이터를 받아올 때 Observable.create를 통해 전체를 감싸고 .onNext를 통해 데이터를 넘겨줍니다. 데이터를 모두 넘겼다면 .onCompleted를 통해 완료됨을 알려주면 참조가 사라지게 됩니다. 이로써 메모리까지 관리가 됩니다.
마지막 return Disposables.create()는 RxSwift에서 반든시 disposable로 return 하도록 하여 리턴하였습니다.

보다 좋은 코드로는 아래방법도 있습니다. DispatchQueue를 쓰지 않고 작성한 코드입니다.

Observable Life Cycle

  • Observable의 생명주기는 다음과 같습니다.
  1. Create
  2. Subscribe
  3. onNext
  4. onCompleted / onError
  5. Disposed
  • Observable은 만들어진다고 해선 실행되지 않고 반드시 subscribe이 되면 그때 실행되게 됩니다.
  • 또한 한번 subscribe에 의해 실행된 observable은 반드시 Disposed되기 때문에 재사용되지 않습니다. 다시 사용하고자 하면 다시 subscribe해줘야 합니다.

1번에서 받아온 데이터를 처리하는 2번의 코드는 다음과 같습니다.

☞ .onNext를 통해 보낸 데이터를 .next로 받아서 사용하고 완료가 되면 .onCompleted()를 통해 완료됨을 받아 .completed에서 완료가 되어 Observable이 완료가 됩니다.
물론 Observable을 만드는 곳에서 DispatchQueue.main 작성하지 않고 데이터 사용시 UI를 변경 한다면 데이터를 사용하는 곳에서 DispatchQueue.main를 작성하여 사용해야 합니다. 이 부분은 좀 더 간단한 방법이 있다하니 후에 다시 공부해보도록 하겠습니다.


profile
iOS 개발자가 되기 위해

0개의 댓글