티스토리 뷰

Develop/iOS

[RxSwift] 1. Observable

Zartt 2021. 10. 29. 20:00

RxSwift에서 가장 중요한 요소 중 하나인 Observable에 대해 알아보겠습니다.

 

Observable란?

구독할 수 있는 스트림 형태의 값, 해당 값을 생성시에 들어오는 값을 Observer가 관찰하고 있다가 값을 방출해준다.

 

사실 개념만 봐서는 이해가 잘 안될 수 있습니다.

Observable을 공부해본 결과 Observer와 Observable이라는 개념이 존재합니다.

Observer는 값을 관찰하고 있다가 스트림으로 값을 보냅니다.
Observable는 받을 수 있는 값들을 모아 스트림을 만들고 해당 값을 가지고 있습니다.

 

Observer에도 2가지 형태의 Observer가 존재 합니다.
첫번째는, Observable 생성시에 값이 들어오는 것을 추적하는 Observer. 값이 들어오면 방출하는 emitter 형태입니다.
두번째는, Observable을 subscribe 하게되면 스트림에서 값을 받게 되는데, 이때 가져올 수 있는 값들을 관찰합니다.

 

Observable 생성 방법

just, of, from, create 등을 통해 Observable을 생성할 수 있습니다.

 

just는 데이터의 하나의 값을 전달합니다.

 

of는 두 개 이상의 데이터를 입력 받고, 하나씩 onNext로 전달 합니다.

 

from은 데이터 타입의 배열을 입력 받고, 배열의 각 데이터를 하나씩 onNext로 전달합니다.

 

create는 값을 전달하는데 로직을 함께 구현할 수 있습니다.

값이 존재하고 에러가 없을 시에는 onNext로 값을 전달할 수 있습니다.

만약 error가 발생해서 값을 보낼 수 없는 경우, onError로 error를 보낼 수 있습니다.

오류가 발생하지 않고 더 이상 onNext로 보낼 값이 없는 경우는 onCompleted로 값 전달이 끝났음을 알립니다.

create로 직접 데이터 전달 로직을 작성할 경우 return Disposables.create() 로 반드시 Disposable 을 리턴해야합니다.

 

Observable 사용 방법

위에서 언급된 subcribe를 이용하면 Observable을 사용할 수 있습니다.

Observable을 생성하면 값을 가진 스트림이 생성되었을 뿐, subscribe하기 전 까지 사용되지 않습니다.

subscribe하게 되면 Observable 스트림이 가지고 있는 값을 하나씩 가져와 사용하게 됩니다.


Observable을 subscribe하면 Disposable 타입이 리턴되는데, 해당 disposable에서 dispose 메소드를 호출하면 가지고 있던 스트림이 끊어져 즉시 재사용이 불가능해집니다. 그 외에도 onError와 onCompleted가 호출되면 해당 Obervable 스트림을 끊어지고 더 이상 사용이 불가능 하게 됩니다. 그리고 이때 subscribe시에 전달했던 클로저의 레퍼런스 카운트가 감소합니다.

'Develop > iOS' 카테고리의 다른 글

[RxSwift] 3. RxCocoa  (0) 2022.01.16
[RxSwift] 2. Subject and Relay  (0) 2021.11.02
[RxSwift] 0. Why RxSwift, What is RxSwift  (0) 2021.10.28
[iOS]Tab Bar의 Layout  (0) 2021.08.03
[iOS]전화 바로 걸기: 전화 번호와 특수문자  (0) 2021.08.02
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함