iOS/Combine

Combine (1) - 개요

릴 루 2023. 1. 28. 01:23

WWDC2019에 등장한 Combine !!! Swift5.0부터 적용됨.! (async, await는 Swift5.5)

개념과 관련된 내용들은 공식문서를 번역하여 정리하였다 ㅎㅅㅎ

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

앞으로의 Combine 내용도 공식문서에 기초하여 기록할 예정 🧸

 


 

개념

💡 이벤트 처리 연산자들을 통해 비동기 이벤트들을 핸들링 할 수 있게 하는 것
  • Combine Framework는 시간에 따른 값 처리 Swift API를 제공한다. 여기서 값이란, 많은 종류의 비동기 이벤트들을 말한다.
  • Combine은 시간에 따른 값을 제공할 수 있는 Publishers와 Publishers로부터 해당 값들을 받는 Subscribers로 정의된다.
  •  Timer, NotificationCenter 및 URL Session을 포함한 여러 Foundation 유형이 Publisher를 통해 기능을 드러낸다.
  • 또한 Combine은 Key-Value Observing을 준수하는 모든 속성에 대해 내장 Publisher를 제공한다.
  • 여러 Publisher의 출력을 결합하고 상호 작용을 조정할 수 있다. 예를 들어, TextField의 Publisher에서 업데이트를 구독하고 Text를 사용하여 URL 요청을 수행할 수 있다. 그런 다음 다른 Publisher를 사용하여 응답을 처리하고 이를 사용하여 앱을 업데이트할 수 있다.
  • Combine을 채택하면 이벤트 처리 코드를 중앙 집중화하고 중첩된 클로저 및 컨벤션 기반 콜백과 같은 번거로운 기술을 제거하여 코드를 읽고 유지보수하기 쉽게 만들 수 있다.
비동기로 동작하는 모든 유형을 통합함 !!

 


📌 이전에 존재했던 비동기 인터페이스

Target/Action, Notification center, URLSession, Key-value observing, Ad-hoc callbacks

 

 

주요 용어

  • Publisher
    • 하나 혹은 여러 개의 Subscriber 객체에 시간이 흐름에 따라 값을 내보낼 수 있는 타입을 선언하기 위한 프로토콜
    • Output, Failure 타입이 제네릭으로 구현되어 있다.
    • Future, Just, Deferred, Empty, Fail, Record와 같은 Publisher 프로토콜을 준수하는 Struct, Class들이 미리 구현되어 있다.
    • Subscribers가 요청한 경우에만 값을 보낸다.
  • Subscriber
    • Publisher에게 값을 받을 수 있는 타입을 선언하기 위한 프로토콜
    • Input, Failure 타입이 제네릭으로 구현되어 있다.
  • Operator
    • Publisher를 반환하는 Publisher 프로토콜에 정의된 메서드들
    • 여러 종류의 Operator를 Combine 하여 사용하여 Publisher가 내보내는 값을 처리한다.
    • Upstream, DownStream이라고 하는 Input, Output을 가지고 있다.
  • Subscription
    • Publisher와 Subscriber의 연결을 나타내는 프로토콜
    • 즉, Publisher + Operator + Subscriber로 이뤄진 하나의 작업이 Subscription

 

출처 : https://icksw.tistory.com/271

 

 


 

 

블로그 안 쓴 지 너무 오래됐다... ㅜ_ㅜ

프로젝트를 진행하면서 비동기 프레임워크로 async/await을 쓰다가 Combine도 경험해보고자 공부를 했따당

남은 Combine 내용들은 다음 글에서 ~ !

async/await도 정리해서 남겨둬야겠다..📚

글을 마무리하며.. 오늘 만났던 오리 가족들 ㅎㅎ 🦆 어디로 가고 있늬 ~