Combine(1) : Overview

panther222128·2021년 4월 25일
0

Swift Combine Framework

목록 보기
1/7

https://developer.apple.com/documentation/combine

"Customize handling of asynchronous events by combining event-processing operators."

이벤트 프로세싱 오퍼레이터를 결합해 비동기 이벤트 처리를 커스터마이징 합니다.

Overview

Combine 프레임워크는 값이 시간에 걸쳐 프로세싱되는 것에 있어 선언적 Swift API를 제공합니다. 앞서 언급한 값들은 여러 가지 비동기 이벤트를 나타낼 수 있습니다. Combine은 시간의 경과에 따라 변화할 수 있는 값들을 누군가에게 보내는 퍼블리셔 선언할 수 있습니다. 그리고 구독자는 퍼블리셔로부터 전송된 값을 받습니다.

  • 퍼블리셔 프로토콜은 시간에 따라 일련의 값을 보낼 수 있는 하나의 타입을 선언합니다. 퍼블리셔는 업스트림 퍼블리셔로부터 받은 값에 어떠한 작용을 할 수 있는 오퍼레이터를 갖고 있으며 값을 다시 내보냅니다.

  • 퍼블리셔의 연쇄 끝에는 하나의 구독자가 값들을 받습니다. 퍼블리셔는 구독자로부터 명확한 요청을 받았을 때에만 값을 보낼 수 있습니다. 이러한 내용은 구독자 코드를 얼마나 빠르게 이벤트를 전달받을지에 대한 컨트롤에 작성합니다.마지막 문장은 정확하지 않을 수 있습니다.

여러 가지 Foundation 타입들이 퍼블리셔를 통해 전달될 수 있으며, 타이머, NotificationCenter, URLSession 역시 포함합니다. Combine 역시 Combine 자체에 내장된 퍼블리셔를 제공하고 있으며, Key-Value Observing을 따르는 어떤 프로퍼티에 대해서도 적용 가능합니다.

Combine을 통해 다수의 퍼블리셔 출력을 결합시킬 수 있으며, 다수의 퍼블리셔가 서로 상호작용하도록 조직화할 수도 있습니다. 예를 들어 텍스트 필드의 퍼블리셔로부터 업데이트를 구독할 수 있고, URL 요청이 이뤄지도록 그 텍스트를 사용할 수도 있습니다. 그리고 다른 퍼블리셔를 사용해 응답을 처리할 수도 있고, 이들을 사용함으로써 앱을 업데이트 할 수도 있습니다.

Combine을 적용하면 코드를 읽기가 쉬워지고 유지보수도 편해집니다. 이게 가능한 이유는 이벤트 처리 코드를 중앙에 모을 수 있음과 동시에 중첩 클로저나 콜백과 같은 것들이 제거되기 때문입니다.

0개의 댓글