Combine 준비
TLDR은 처음으로 MVVM을 도입한 프로젝트입니다.
바로 Combine을 도입하진 않았고,
프로퍼티 옵저버인 didSet을 이용해 데이터 바인딩을 구현했습니다.
이제 Combine을 학습해서 도입하고자,
정리하는 포스팅을 한 번 작성하려고 합니다 ㅎㅎ
Observable
먼저 기존 Observable에 대해 알아봅시다.
Observable 모델은 아래처럼 구현되어 있습니다.
final class Observable<T> {
typealias Listener = (T) -> Void
var listener: Listener?
var value: T {
didSet {
listener?(value)
}
}
init(_ value: T) {
self.value = value
}
func bind(listener: Listener?) {
self.listener = listener
listener?(value)
}
}
bind 메서드를 통해 데이터가 변할 때 수행할 동작을 클로저로 등록하고,
value가 바뀔 때마다 해당 클로저를 수행합니다.
ViewModel에서는
let text: Observable<String> = Observable("")
이렇게 Observable을 생성하고,
View에서는
homeVM.text.bind { [weak self] text in
...
}
ViewModel의 Observable 프로퍼티에 접근해서 bind 메서드 호출하고 클로저를 설정합니다.
이제 Observable의 value를 변경시키면 여기서 등록한 동작이 수행됩니다.
Combine으로 바꿀 부분
아직 Combine을 제대로 학습하기 전이지만,
데이터의 변경에 반응해서 이벤트를 수행하는 원리라는건 알고 있는데요 ㅎ
위의 Observable과 동일한 흐름으로 수행이 될 것입니다.
따라서 Observable을 이용한 모든 곳을 Combine으로 변경하면 되겠죠?
학습 계획
먼저 WWDC를 봐야겠죠?
다만, Combine과 SwiftUI를 한 세트로 설명하고 있어서
이해하기 힘들지 않을까 걱정입니다.
그래도 일단 들어보려고요 ㅎㅎ
WWDC로 지식의 기본 틀을 잡고,
블로그들을 통해서 사용법을 터득해야겠어요.
새해가 되고 하고 싶은 개발이 많은데 화이팅 해야겠습니다.
감사합니다!
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.