teunteun2
[Combine] 정의 및 구조 - developer 문서로 시작한 Combine 공부(1) 본문
계속 RxSwift만 사용해오다가 Hous- 프로젝트 업데이트 기념,,
RxSwift + ReactorKit으로 구현되어있는 코드를 Combine으로 리팩토링 해보고자 Combine 공부를 시작했습니다.
시간도 많아지고 꽤 여유로우니 무작정 개발을 시작하는 방법보단 (사실 이게 제일 빨리 늘긴하는데 그러다보면 구멍이 생길 때도 ..)
문서를 읽으며 천천히~ 공부해보고자 합니다.
Combine
Customize handling of asynchronous events by combining event-processing operators.
이벤트 처리 연산자를 조합하여 비동기 이벤트 처리를 사용자 맞춤화 하는 프레임워크
Combine 프레임워크는 시간 경과에 따른 값 처리를 위한 선언적 Swift API를 제공합니다.
이러한 값은 여러 종류의 비동기 이벤트를 나타낼 수 있습니다.
Combine은 Publisher가 시간에 따라 변경될 수 있는 값을 노출하도록 선언하고
Subsciber는 Publisher로부터 해당 값을 수신하도록 선언합니다.
Publisher
1. Publisher Protocol은 시간에 따라 일련의 값을 전달할 수 있는 타입을 선언합니다.
2. Publisher는 Upstream Publisher에서 수신한 값에 따라
작업을 수행하고 이를 다시 게시할 수 있는 Operators가 있습니다.
Subscriber
1. Publisher chain의 끝에선, Subscriber가 Publisher로부터 받은 element를 바탕으로 실행됩니다.
2. Publisher는 Subscriber가 명시적으로 요청한 경우에만 값을 내보냅니다.
3. 이렇게 하면 Subcriber가 연결된 Publisher로부터 이벤트를 받는 속도를 제어할 수 있습니다.
실제로 Rx랑 상당히 비슷한 것 같네요
Observable과 Observer 사이의 구독을 통한 이벤트 방출 및 수신, 그리고 체이닝을 통한 이벤트 가공 등등 ..
추가적인 정보
Timer, NotificationCenter 및 URLSession을 비롯한 여러 Foundation 유형이 Publisher를 통해 기능을 제공합니다.
또한 Combine은 Key-Value Observing과 호환되는 모든 속성에 대해 기본 제공 Publisher를 제공합니다.
여러 Publisher의 Output을 결합하고 상호 작용을 조정할 수 있습니다.
예를 들어 텍스트 필드의 Publisher로부터 업데이트를 구독하고 텍스트를 사용하여 URL 요청을 수행할 수 있습니다.
그런 다음 다른 Publisher를 사용하여 응답을 처리하고 이를 사용하여 앱을 업데이트할 수 있습니다.
Combine을 채택하면 이벤트 처리 코드를 중앙 집중화하고
nested-closures 및 컨벤션 기반 콜백과 같은 번거로운 기술을 제거하여 코드를 읽고 유지 관리하기가 더 쉬워집니다.
https://developer.apple.com/documentation/combine
여기까지가 Developer 홈페이지의 Combine 프레임워크 문서 내용입니다.
Combine 문서 하단에는 Combine과 관련된 많은 주제가 링크로 연결되어 있는데요,
이 다음은 Receiving and Handling Events with Combine 문서로 돌아오겠습니다