Posts 개린이의 관점에서 Combine 살펴보기(1)
Post
Cancel

개린이의 관점에서 Combine 살펴보기(1)

머리말

안녕하세요 오랜만에 글을 쓰네요ㅎㅎ 진행하던 프로젝트를 마치고 앱스토어에 등록하고(여기ㅎ), 중간고사도 보고… 아무튼 바빴습니다ㅎ

그래서~ 이제 뭘 공부해볼 것이냐? 바로 Combine 입니다ㅎㅎ. 이번에 잠깐 다른 프로젝트에 참여하면서 SwiftUI를 사용해볼 경험이 있었습니다. UIKit과 비교해서 정말 좋았어요. preview로 UI의 변경사항을 바로바로 확인할 수 있다는 점과 가독성이 말도 안 되게 좋은 점이 매력적이었습니다. 그런데 네트워킹 없는 반쪽짜리 앱을 만들자니 조금 아쉬웠어요. 그래서 애플에서 제공하는 프레임워크이고, SwiftUI와 바인딩 되어있는 Combine 을 공부해보려 합니다~

그래서 Combine이 뭔데?

Combine은 ‘결합하다’ 라는 뜻이 있죠? 애플 개발자 문서를 보면 combine을 아래와 같이 한줄로 표현하고 있습니다.

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

이벤트 처리 연산자들을 결합하여 비동기 이벤트 처리를 커스터마이즈 함.

흠… 뭔가 operator들이 제공되고 그 operator들을 결합해서 내가 원하는대로 비동기 이벤트를 처리할 수 있다고 합니다. 그래서 Combine이군. 네 고생하셨습니다. 포스팅 끝… 이고 싶다.


CombinePublisher, Subscriber, Operator 이렇게 3가지의 Key Concepts이 있습니다. 간단하게 정의를 알아볼까요?

upstream, downstream이라는 용어가 등장하는데, 데이터의 흐름을 표현하기 위해 stream이라는 용어를 사용합니다. 물이 상류에서 하류로 흐르듯이, 현재 처리하고 있는 시점보다 이전이면 upstream, 이후면 downstream 이라고 이해하면 되겠습니다.


개념

Publisher

시간의 흐름에 따른 value의 sequnce를 전달할 수 있는 프로토콜을 의미합니다. associatedtype으로 Output, Failure를 가집니다.

Output: publisher가 발행하는 value의 타입

Failure: publisher가 발행할 수 있는 error의 타입


Subscriber

Publisher로 부터 input을 받을수 있는 타입을 선언하는 프로토콜입니다. associatedtype으로 Input, Failure를 가집니다.

Input: subscriber가 전달받은 value의 타입

Failure: subscriber가 받을 수 있는 error의 타입


Operator

Publisher 프로토콜을 채택하였으며, upstream publisher를 subcribe하고, downstream subscriber에게 결과를 내보냅니다.

pubopsub

이 그림처럼 Publisher가 값을 방출하면 Operator로 그 결과를 가공하고, 해당 OperatorSubscriber에게 결과를 내보내는 것입니다.


음… 오늘은 본격적으로 들어가기 전에 간단히 소개를 해봤습니다. 조금 생소한 개념이네요ㅎㅎ. 다음에 하게 될 포스팅은 오늘 소개한 그3가지 요소에 대해 좀더 자세히 다룰 예정입니다.

이 글은 개린이의 지식을 바탕으로 작성된 글입니다. 최대한 옳은 정보를 담으려고 노력하겠으나, 그럼에도 틀린 부분이 있을 수 있습니다. 혹여 발견하시면 댓글로 피드백 주시면 감사하겠습니다.

출처

This post is licensed under CC BY 4.0 by the author.

개린이의 관점에서 Kingfisher 살펴보기(5) - Kingfisher의 주요 기능

개린이의 관점에서 Combine 살펴보기(2) - Publisher