[RxSwift] Hello, RxSwift!

잡담

뭔가 부캠을 수료하고, RxSwift를 해야겠다라는 생각을 많이 했어요! 신입 모집 공고에 대부분 우대사항으로 나와있어서 학습해서 손해볼 부분은 없다고 생각했습니다.

원래 마지막 5주 프로젝트할 때, 살짝? 공부를 했었는데 단순하게 쓰면 쓸 수는 있지만 잘 쓰려면 시간을 많이 들여야한다고 생각했습니다.

그래서 본격적으로 학습하기 시작하는 건 오늘일 것 같네요.. 상황 상 코딩테스트 문제를 많이 풀어보는게 더 좋을 것 같긴한데, 역시.. 전 하루종일 코딩테스트 문제만 푸는 건 즐겁지가 않네요 😥

자! 그럼 본격적으로 RxSwift는 어떻게 학습해야할까에 대해서 고민이 많았는데요 저번 프로젝트 때, 급하게 배울려고 4시간짜리 유튜브 강의를 봤었습니다.

사용법은 대충 기억나지만, 확실히 속성으로 배우면 쓸 수 있겠지만 이해하고 쓰는건 아니라는 생각이 들었어요

그래서 좀.. 기초부터 천천히 배워보고 싶었습니다. 찾아보니까 RxSwift 스터디 관련해서 깃허브가 있더라구요!

아래의 링크를 참고하시면 좋을 것 같습니다.

RxSwift 스터디 GitHub

저도 이 링크를 보고 학습 해볼려고 합니다. 책을 보고 학습한 것 같은데 링크에 가보시면 책 구매 링크도 있으니 참고하시길 바랍니다.

현재는 CS, 코딩테스트 등.. 준비할게 많아서 많이는 못할 것 같고, 하루에 챕터 하나씩 읽어보고 학습한 내용 중에 어려웠던 부분이나 몰랐던 부분에 대해 정리해보려고 합니다.

어차피 취직을 하게 된다면, 쓰고 싶지 않아도 쓰게 될 것 같아서 즐거운 마음으로 학습해볼려고 합니다 ㅋㅋㅋ

취직이 가능할지 모르겠지만요.. 😂 (누가 저좀 써주세요 ㅜㅜ)

아무튼, 화이팅!

학습한 내용

1. Observables

도출된 데이터가 Observable 형태로 리턴할 수 있고, 리턴된 값을 비동기적으로 처리하기 위해 이벤트 형태로 처리할 수 있습니다.

이벤트에는 next, completed, error가 있습니다. 대충 이렇게 네이밍만 봐도 역할들을 유추해볼 수 있는데,

  • next : 최신/다음 데이터를 ‘전달’하는 이벤트
  • completed: 성공적으로 일련의 이벤트들을 종료시키는 이벤트. 즉, Observable(생산자)가 성공적으로 자신의 생명주기를 완료했으며, 추가적으로 이벤트를 생성하지 않을 것임을 의미
  • error: Observable이 에러를 발생하였으며, 추가적으로 이벤트를 생성하지 않을 것임을 의미 (에러와 함께 완전종료)

라고 하네요!

여기서 몰랐던 점이 하나 있었는데, Infinite observable sequences라는 겁니다. 저는 이게 이벤트가 한 번 발생하면 무조건 끝난다고 생각을 했었어요! 4시간 속성 유튜브 강의를 봤을 땐..

하지만, completed를 안해주면 무한하게 관찰이 가능한 것 같아요. 정확히 이게 completed를 호출하지 않아서 인지는 더 배워봐야 알겠지만, 확실한건 무한하게 관찰이 가능하다라는 점입니다.

2. Operators

4시간짜리 유튜브를 보면서 오.. 이거 learning curve가 좀 크겠는데? 했던 부분이 이 부분이었던 것 같아요.

첫 번째 챕터에서는 subscribe하기 전에 간단하게 filter와 map만 보여줬는데, 이게 Rx 커뮤니티를 보니까 operator가 정말 많더라구요.

얼른 많이 학습해서 잘 사용해보고 싶네요!

3. Schedulers

확실히.. dispatch queue를 쓰면서 뭔가 main thread에서 해줘야할 것들, 비동기로 처리해줘야할 것들 등 하나하나 설정해줬던 것 같은데 여기서 설명하기론 개발자가 자신만의 스케줄러(?)를 생성할 일이 없다라고 하네요??

이게 아직 무슨 의미인지 잘 모르겠습니다. 특별히 신경쓰지 않아도 알아서 적절한 스레드에 동작하게 만들어준다는 의미인가.. 이 부분은 후반부에서 깊이 다룬다고하니 넘어가야할 것 같습니다.

4. App Architecture

저는 RxSwift면 무조건 MVVM만 써야하는 거 아니야?? 라는 고정관념이 박혀 있었는데, RxSwift는 앱 아키텍처에 영향을 주지 않는다고 하네요.. 오.. 처음 알았습니다.

실제로 판매 링크 책에도 MVC 패턴을 사용했다고 합니다 ㅋㅋㅋ 근데 RxSwift가 MVVM이랑 찰떡이라고 하긴 하더라구요! 👍

5. RxCocoa

UIKit과 바인딩하기 위해 쓰는 것 같아요

MVVM으로 해줄 땐, ViewModel과 didSet을 통해 바인딩을 해줬던 경험이 있는데, 애초에 UI와 바인딩해주는 코드가 있다면 더욱 더 깔끔한 코드가 나올 것 같아요

소감

아직 블로그에 학습정리하는 게 익숙하지 않지만, 꾸준히 해보려고 합니다. 부스트캠프를 하면서 지식 공유가 정말 중요하다고 느꼈어요..

저도 개발을 하면서 여러 블로그들 덕분에 해결한 문제들도 많습니다. 아직 제 블로그가 그정도까진 아니지만 저의 학습정리가 다른 분들에게도 조금이나마 도움이 되었으면 합니다.

하루에 적어도 게시글 하나씩은 올려보려고 노력중 입니다 ㅎㅎ 화이팅!