Combine 을 배워보자(1)

미니·2023년 2월 25일
0

Combine

목록 보기
2/2


대체로 Combine 프레임워크에서 세가지의 핵심 요소가 존재한다. 이들은 Publisher Operator Subscribers 이다. 당연하게도 더 많은 요소들을 가지고 있지만, 세 가지가 없을 경우에는 우리가 원하는 바를 이룰 수 없다.

Publisher

Publisher는 한개 또는 그 이상의 관심을 가지고 있는 대상에게 값들을 방출할 수 있는 타입이다. 연산, 네트워킹 또는 사용자의 이벤트 처리를 포함하여 모든 것이 될 수 있는 Publisher의 내부 논리에 관계 없이 다음 세가지 유형의 이벤트를 보낼 수 있다.

  • Publisher의 제네릭 타입인 Output 타입의 값
  • 성공에 대한 Completion
  • Publisher의 Failure 타입과 동일한 에러를 방출하는 Completion

Publisher는 값을 보내지 않을 수도 있으며, 1개 이상의 값을 내보낼 수 있다. 이는 성공적이든 실패에 의한 것이든 완료된 경우 다른 이벤트를 내보낼 수 있다.

다음 그림의 파란색 박스들은 타임라인에 따라서 방출되는 값들을 이야기한다. 우측에 있는 수직선은 데이터 흐름의 종료를 이야기한다.

세가지의 가능한 이벤트의 연결은 매우 보편적이여서 프로그램에서 모든 종류의 동적 데이터를 나타낼 수 있다. 따라서 연산, 네트워크 호출, 사용자 이벤트에 대한 반응 또는 화면에 데이터 표시에 관계 없이 Combine Publisher를 사용하여 앱의 모든 작업을 처리할 수 있습니다.

Publishers의 가장 좋은 기능 중 하나는 내부적으로 에러 처리를 포함하고 있다는 것이다. 우리가 에러를 처리하기 위해서 추가적으로 해줄 것들이 없다는 것이다.

Publisher 프로토콜은 두가지의 제네릭 타입을 가지고 있다.

  • Publisher.Output 은 Publisher의 반환 값들이다.
  • Publisher.Failure 는 실패했을 경우에 Publisher가 던질 수 있는 타입이다.

주어진 Publisher를 구독할 개, 어떤 값을 기대할 수 있고, 어떤 오류로 실패할 수 잇는 지 알 수 있게 됩니다.

Operators

Operators는 동일한 Pubilsher또는 새로운 Publisher를 반환한다. 이는 Publisher 프로토콜에 선언된 메서드이다. 이는 여러 연산자를 차례로 호출하여 효과적으로 함께 연결할 수 있기 때문에 매우 유용하다.

Operators라고 불리는 이런 메서드들은 매우 분리되어 있고, 구성 가능하기 때문에 단일 구독 실행에 대해 매우 복잡한 논리를 구현하기 때문에 결합할 수 있다. 이들을 통해서 단단하게 구성되어 있는 퍼즐을 맞추는 것 같다. 이들은 하나의 출력이 다음 입력 유형과 일치하지 않는 경우에 대한 실수로 잘못된 순서로 놓거나 함께 맞출 수 없게 되기 때문이다.

명확하게 결정론적 방식으로 올바른 입력과 출력 유형 및 기본 제공 오류 처리와 함께 각 비동기 추상화 작업의 순서를 정의할 수 있게 됩니다. 추가적으로 Operator는 항상 업스트림과 아웃 스트림이라고 불리는 입력과 출력을 가지고 있게 된다. 이는 상태를 공유하는 것을 막을 수 있다.

Operator는 이전의 연산자로 부터 받은 데이터로 작업하는 데 중점을 두고 체인의 다음 연산자에 출력을 제공합니다.

Subscriber

마지막으로, 우리는 Subscription의 체인의 끝에 도달하게 된다. 이들은 일반적으로 Output이나 completion Event들에서 무엇인가를 하게 된다.

현재의 Combine은 두가지의 내장된 Subscriber를 가지고 잇다.

  • Sink 는 출력 값이나 Completion에 대해서 처리할 수 있는 클로저를 제공하고 있다.
  • Assign 은 어떤 Custom한 코드를 작성하지 않고, 출력값을 프로퍼티에 저장하는 것을 제공한다.

0개의 댓글