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() 버리는 가방 이런 느낌인 것같다.