apple/UIKit & ReactiveX

[RxSwift] Signal, emit

lgvv 2022. 2. 19. 17:17

  Signal과 emit 

 

이번에는 Signal과 Emit에 대해서 알아보자.

다른 사람의 Rx 코드를 리뷰하고 있는데 Signal과 emit이 있는거임

찾아보니까 Driver와 비슷했고, Signal은

잘 사용하지 않았지만, 코드를 제대로 이해하려면 정리가 필요할 것 같다고 생각해서 정리 ㄱㄱ

 

✅ Signal vs Driver

이 한장으로 사실 모든걸 설명할 수 있지.
🟠 공통점 -  error를 방출하지 않는다. - 메인 스레드에서 작동한다.

 

🟠 차이점 - 그림에서 보다시피 Driver는 sub할때 replay를 통해 emit이 일어나지만 Signal은 sub할때 replay를 하지 않는다.

 

 

✅ 그렇다면 Signal은 주로 어떨때 사용할까?

Signal은 replay되면 문제가 있는 스트림에 사용하면 되겠다.

 

여러 코드를 살펴보는데 주로 viewModel -> View로 가는 작업 즉, UI 관련한 것들에 Signal이 보였다.

내 생각에는 Driver를 사용하는게 더 편리하지 않을까 싶다.

 

✅ emit은 Driver를 사용했을때 drive라고 생각

 

✅ 내 생각.

Signal과 Driver가 주로 비교되는 것 같아서 어떤걸 사용해야 하는지 생각을 해봤는데, 적재적소에 더 알맞는 것을 사용하는게 물론 베스트겠지만, 내가 짠 코드가 다른 사람이 보았을 때, Signal과 Driver가 섞여 있으면 통일감(?)이 떨어져서 불완전하게 보이는 요소로 작동하지 않을까도 생각이 들었다. 

아무튼 다른 생각이 있다면 댓글로 남겨주세요.

 

 

(참고)

https://medium.com/@hongseongho/%EB%B2%88%EC%97%AD-signal-and-relay-in-rxcocoa-4-619d5194dcbd

 

[번역] Signal and Relay in RxCocoa 4

Signal과 Relay를 사용하면 얻을 수 있는 장점이 무엇인지 알아보자

medium.com