Programming/Mac & iOS

[RxSwift] Obseravbles

MB Brad KWON 2017. 5. 13. 15:58

    Observable은 Rx에서 중요한 요소이다. Sequence하고도 불리지만 대부분 Obserable이라고 불린다. Observable 3가지 타입의 이벤트를 수용한다. 각 event는 onNext, onComplete, onError이다. 각 event는 아래와 같이 정의된다.


onNext

아래의 그림에서 각 원으로 표시되는 event로, 각 element마다 발생하는 event이다.


onCompleted

아래의 그림에서 수직으로 그어진 선이다. observable의 정상적인 종료를 의미한다.

onError

아래의 그림에서 빨간 'X'이다. observable의 비정상적인 종료를 의미한다. error 객체를 반환한다.




    observable은 of, just, from 등의 operator들에 의해 생성된다. 생성된 observable이 각 event에 맞게 수행할 handler를 구현하기 위해서 subscribing이 선행되야한다. subscribe은 아래의 코드처럼 실행한다.





    observable을 명시적으로 해제하기 위해선 dispose()를 호출해야 한다. 일반적으론 dispose bag을 사용한다. dispose bag은 각 observable의 해제를 위한 disposable을 소유하고 있다. dispose bag이 해데되는 시점에 각 observable의 disposable을 통해 자동으로 해제된다. 중요한건 dispose bag에 disposable을 넣는 것을 잊을 경우, 컴파일러에서 이를 알려준다. 일반적으로 observable 해제의 자동화를 위해, 아래와 같은 패턴으로 observable의 disposable을 dispose bag에 할당한다.