스위프트 콤바인
게시자 및 구독자
이 글에서는 Combine 프레임워크의 PUBLISHER & SUBSCRIBER 두 가지 핵심 구성 요소의 기본 사항을 살펴보겠습니다. Apple은 2019년에 Combine이라는 내장 시스템 프레임워크를 도입했습니다. 이 프레임워크는 시간 경과에 따라 데이터를 처리하기 위한 선언적 API를 제공합니다.
발행자
Publisher는 Protocol Publisher에게 확인하는 타입입니다. 하나 이상의 구독자에게 이벤트를 내보낼 수 있습니다.
게시자 프로토콜은 두 가지 유형에 대해 일반적입니다.
- 출력 → 게시자가 내보내는 출력 값의 유형
- 실패 → 게시자가 값을 내보내지 못할 때 발생하는 오류 유형입니다.
- 출력 값/s
- 완료
게시자는 구독 중인 경우에만 이벤트를 내보냅니다.
게시자의 주요 기능 중 하나는 게시자의 출력과 일치하도록 구독자로부터 입력 매개 변수를 받는 수신입니다.
구독자
구독자는 게시자로부터 어떤 종류의 입력을 받아야 하는지 정의합니다.
가입자 프로토콜은 두 가지 유형에 대해 일반적입니다.
- 입력 → 가입자가 처리할 수 있는 입력 값의 종류
- 실패 → 퍼블리셔로부터 실패를 받았을 때 구독자가 처리할 수 있는 오류의 종류
게시자 및 구독자와 작업
게시자 생성
Publisher는 Just, Future, PassthroughSubject, CurrentValueSubject 등과 같은 결합 프레임워크에서 제공하는 모든 유형을 사용하여 생성할 수 있습니다.
가입자 생성
구독자는 다음과 같은 내장 유형을 사용하여 만들 수 있습니다.
- 싱크대
- 양수인
싱크는 구독자를 게시자에 연결하는 가장 간단한 방법입니다.
싱크는 게시자의 값을 수락하고 처리하는 클로저와 완료를 처리하는 클로저 두 개를 제공합니다.
할당(대상: )
Assign to는 게시자로부터 값을 가져와 주어진 개체에 할당합니다.
예: 게시자와 구독자의 작업 시연
순서
Sequence Publisher는 일련의 값을 내보낸 다음 마지막에 완료를 호출합니다.
산출:
주어진 예에서 게시자가 먼저 모든 값을 순차적으로 내보내고 마지막으로 완료 블록을 호출하는 것을 볼 수 있습니다.
단지
Just Publisher는 출력을 각 구독자에게 정확히 한 번만 즉시 보낸 다음 완료합니다.
Just Publisher는 오류로 실패할 수 없습니다.
산출:
언급한 바와 같이 Just는 현재 값을 전송한 직후에 완료를 완료합니다.
미래
향후 게시자는 비동기 작업의 값 또는 실패를 내보낸 다음 완료됩니다. Promise 라는 클로저의 도움으로 이를 수행하는 미래 . Promise는 값 또는 실패가 될 수 있는 하나의 결과 매개변수를 사용합니다. Future는 Promise에서 값이나 실패를 받은 직후에 완료됩니다.
위의 예에서 Future가 값을 가져오는 약속 클로저를 호출하는 것을 볼 수 있습니다.
산출:
여기에서 "Started Running"이 먼저 인쇄됩니다. 구독자가 비동기 작업을 시작하는 게시자를 먼저 구독하기 때문입니다. 그런 다음 비동기 작업이 진행 중이므로 "End"를 인쇄하고 마지막으로 받은 값과 받은 완료를 인쇄합니다.
PassthroughSubject
PassthroughSubject는 여러 값을 방출하며 초기 값이 없습니다. 구독자를 연결하면 send (:) 메서드에서 값을 받을 수 있습니다.
위의 예에서 PassthroughSubject에 초기 값이 없음을 알 수 있습니다. send (:) 메서드를 사용하여 게시자에게 값을 보낼 때 구독자의 수신 값 콜백에서 내보냅니다.
산출:
현재값제목
CurrentValueSubject는 현재 값을 방출하며 생성되는 동안 초기 값으로 초기화되어야 합니다. 구독자를 연결할 때 게시자는 PassthroughSubject와 동일한 send (:) 메서드에서 값을 받을 수 있습니다. 게시자의 현재 값은 value 속성을 사용하여 액세스할 수 있습니다. 게시자에게 새로운 현재 값을 할당하는 데 동일하게 사용할 수 있습니다.
위의 예는 게시자가 초기 값 0으로 초기화되었음을 보여줍니다. PassthroughSubject와 마찬가지로 send (:) 메서드를 사용하여 게시자에게 값을 보낼 수도 있습니다 .
CurrentValueSubject의 값 속성은 현재 값을 가져오고 언급된 현재 값 을 할당하는 데 사용됩니다.
산출:
신청
구독자가 구독하는 게시자를 구독이라고 합니다. 구독은 " 취소 가능 " 프로토콜을 확인합니다 .
[참고: 구독자가 게시자로부터 가치를 더 이상 받고 싶지 않으면 구독을 취소하는 것이 좋습니다. 취소는 "취소" 방법으로 가능합니다. 명시적으로 호출하지 않으면 게시자가 완료한 경우에만 구독을 중지합니다.]
산출:
Publisher와 Subscriber를 다루는 데 도움이 되는 몇 가지 기본 사항을 다루었기를 바랍니다. 행복한 학습!
감사합니다 :)

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































