개요
RX의 대체품!
SwiftUI의 자매품!
MVVM을 쓸 때 없어선 안될 combine
알아보자.
Combine이전의 비동기 처리
- NotificationCenter: 화면 전환, 키보드등의 처리
- Delegate Pattern: 가장 흔했던 방법
- GCD: 가장 흔했던 방법2
- Completion Handler: 콜백(코드 더러워짐)
- 이미 Foundation, Core 프레임워크, SwiftUI의 내부적으로는 Combine 사용중
Combine 한짤요약
Combine 기초
- 가장 중요한 것 Publisher, Operator, Subscriber
Publisher
- 값을 보내는 객체
- Publisher<Output, Fail> 형태
- output, Completion, Failure의 값이나 상태를 보낼 수 있음
- output은 여러번 보낼 수 있음
- Completion, Failure는 한번 보내면 끝
- 에러 처리 안할거면 Never 넣으면 됨
Operator
- publisher 프로토콜에 선언된 메서드
- 체이닝 가능
- 항상 input과 output이 존재하므로 공유 자원에 대한 생각 ㄴㄴ
Subscribers
- Publisher가 보낸 상태 처리하는 곳이며 2개의 내장 Subscriber 존재
- sink subscriber: output, completion을 받을 수 있는 클로저
- assign subscriber: 특별한 코드없이 바인딩 가능하게 해줌
- 기본적으로 이 2개만 사용해도 왠만한 처리 가능
- subscriber가 추가될 때 publisher가 활성화됨
Cancellable
프로토콜로 메모리 관리함
Combine의 장점
- Combine은 비동기 코드의 추상화를 목표로 한다.(우리가 더 이해하기 쉽다)
- Combine 시스템 레벨에 있음. private api임
- 코드가 깔끔해짐, 실수할 가능성 낮아짐
- 재사용성, 조합, 통합, 테스트에 유리함
- 선언형, 반응형 프레임워크로 모던 프로그래밍에 적합