Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

iOS 개발일지

1025 새싹 77회차 정리 - RxSwift Sbuject 본문

SeSAC iOS 데뷔과정 2기

1025 새싹 77회차 정리 - RxSwift Sbuject

Lia's iOS 2022. 10. 25. 21:20
iOS 앱 개발자 데뷔 과정 77회차

 

 

 

 

#1. Checklist

- Operator

- repeatElement & take

 


 

- interval

 


 

- debounce

타이머를 설정한 후, 타이머가 끝난 시점에 가장 최근의 값을 방출한다.

이벤트가 방출될 때마다 타이머가 초기화된다.

 

- distinctUntilChanged

연달아 중복된 값을 전달받을 경우 무시한다.

 

- withUnretained

약한 참조를 갖기 위한 [weak self] 대신 사용할 수 있으며, subscribe 클로저의 첫 번째 파라미터로 받아온다.

 


 

- Subject

- Observable vs Subject

Observable은 이벤트를 생성하고 전달하기만 할 뿐, 새로운 값을 Observable에 추가할 수 없다.

사용자의 입력 등에 따라 실시간으로 데이터의 변화를 감지하여 표현하고, 변경된 데이터를 subscribe를 통해 emit 할 수 있는 객체가 필요하다.

 

 

Subject는 Observable과 Observer를 동시에 담당하고 있기 때문에, 이벤트의 전달과 처리가 모두 가능하다.

또한 Observable을 여러번 subscribe 할 경우 독립적인 실행을 갖지만, Subject의 경우 여러번 Subscribe 하더라도 Observable의 실행이 내부적으로 공유되기 때문에 일정한 값을 받을 수 있다.

 

참고로, Variable은 예전 버전에서 사용했던 Subject이기 때문에 공부하지 않아도 된다.

 


 

- PublishSubject

초기값이 없는 빈 상태로 시작하며, subscribe 이후 시점부터 emit 되는 이벤트를 처리할 수 있는 특성을 가지고 있다.

subscribe 이전에 emit 된 이벤트들은 무시된다.

 

 

 


 

- BehaviorSubject

BehaviorSubject를 생성할 때에는, PublishSubject와 다르게 초기값이 필수이다.

subscribe 이전에 emit한 이벤트가 있다면, 가장 최근에 전달된 이벤트 하나를 전달받을 수 있다.

subscribe 이전에 emit 한 이벤트가 없을 경우에는 초기값을 전달한다.

뷰를 미리 채워두는 용도로 사용하기 용이하다.

 

 

 


 

- ReplaySubject

bufferSize에 작성 된 이벤트 만큼, 메모리에 이벤트를 가지고 있다가 subscribe를 한 직후에 한번에 이벤트를 전달한다.

오류가 발생하더라도 메모리에 보유하고 있는 이벤트를 emit 하고 error 를 notification 한다.

많은 양을 버퍼로 가지고 있을 때는 메모리 부하가 발생할 수 있다.

 

 


 

- AsyncSubject

PublishSubject, BehaviorSubject, ReplaySubject는 subscribe 한 이후 이벤트가 전달되면 즉시 이벤트를 전달한다.

하지만 AsnycSubject는 subscribe를 했더라도, completed 이벤트가 전달되기 전까지 어떤 이벤트도 전달하지 않는다.

그리고 completed 이벤트가 전달되면, 가장 최근 시점에 전달된 next 이벤트 하나를 함께 전달한다.