RxSwift시작하기1-2

작성일

사실 RxSwift는 이제부터 시작인것 같다.
지난 학습을 복습해보면,

// just는 하나의 특정요소로 Observable을 생성하는 경우
let observable = Observable.just(1)

// of는 배열이나 다른요소로 관찰 가능한 항목을 만드는 것 여러 요소의 집합 배열이 아니다.
let observable2 = Observable.of(1,2,3)

// 이건 배열이다. 정수 배열이 생성 된 것이다.
let observable3 = Observable.of([1,2,3])

// 배열이 아니라 하나하나꺼내준다 for in 같은 느낌?
let observable4 = Observable.from([1,2,3,4,5])

이런 느낌인 것이다.

이제 구독을 했으면 동영상이 올라올 때 마다, 알람을 받아야하는데 이 알람이 바로 subscribe란 메서드이다.
위 코드와 같이 코드로 살펴보면,

observable4.subscribe { event in
    if let element = event.element {
        print(element)
    }
}

이렇게 사용하면 되는데, 이건 observable4에 있던 동영상들을 알려주는거라고 생각하면 된다. 이미 있던 동영상 즉, 이러이러한 동영상이 있었다~ 정도로만 기억해주면 된다.
따라서 출력을 해보면,

observable4 출력값은

1
2
3
4
5

가 나오게 된다.

활용해서

observable3 출력값은

[1,2,3]

이 나오게 되는 것이다. 왜냐?! of는 한 요소 이기 때문이다.

이때,

if let element = event.element {
        print(element)
}

이런식으로 사용을 해야한다 아니면 결과값이

next([1,2,3])

이런 방식으로 나타나기 떄문이다.

onNext

if let element = event.element {
        print(element)
}

이런식으로 사용하기 싫으면,

let subscription4 = observable4.subscribe(onNext: { element in
    print(element)
})

이런식으로 onNext를 붙이면 바로 실제 요소에 접근할수 있다.

DisposeBag이란?

구독을 하고있으면 이제 네트워크 통신비가 든다. 여기서 통신비는 메모리이다.
따라서, 이런 메모리 누수(통신비)를 없애는 방법이 있는데 그건바로

let disposeBag = DisposeBag()

을 사용하는 것이다.

사용법은

let disposeBag = DisposeBag()

Observable.of("A", "B", "C")
    .subscribe {
            print($0)
    }.disposed(by: disposeBag)

이렇게 사용하면 된다.
즉, disposed이란 할일을 다하고 버리는 것이다.
메모리에서 제거해 준다는 뜻이다 그래서 DisposeBag() 버리는 가방 이런 느낌인 것같다.