티스토리 뷰

iOS/Swift

[Swift] Combine

HarryJeonn 2022. 6. 7. 18:16

Why ?


  • SwiftUI로 개인 프로젝트를 진행하면서 비동기 프로그래밍으로 RxSwift, RxAlamofire를 사용했다.
  • 그렇게 Rx로 필요한 기능을 구현하고 구글구글링 중 Combine이라는 것을 알게됐다.
  • 애플에서 제공하고 SwiftUI와 찰떡이라고..? 이건 바로 써봐야지
  • 기존 개인 프로젝트에 있는 Rx를 걷어내고 Combine을 입힐거다!

Combine ?


  • 시간의 흐름에 따라 값을 처리하기 위한 Declarative Swift API를 제공하는 프레임워크
  • SwiftUI에는 Combine을 더 쉽게 적용할 수 있도록 디자인 해놨다.
  • 기존 애플의 비동기 처리 방식은 NotificationCenter, Delegate pattern, GCD, Closures 등에서 사용
  • 애플에서 만든 RxSwift 정도로 생각하면 된다고 한다.

Combine의 장점


  • System Level에서 구현되어 있어, 애플이 아닌 다른 user는 사용하지 못하는 부분도 사용한다.
  • IBAction이나 delegate같은 옛 방식을 사용하는 것보다 자동 구현이 많다.
  • 클로저같은 가독성이 안좋은 기술을 제거하여 코드의 유지보수를 쉽게 해준다.
  • 필수는 아니지만 코드 퀄리티를 높이는데 도움을 준다.

Publisher (게시자)


  • 요청 시 데이터 제공한다.
  • Subscriber가 없는 경우 Publisher는 데이터를 제공하지 않는다.
  • 두 가지 유형을 제공한다.
    • Output Type, Failure Type

Subscriber (구독자)


  • Subscriber는 데이터를 요청하고 Publisher가 제공한 데이터를 처리해야 한다.
  • 입력에 대한 유형과 실패에 대한 유형 두 가지 연관된 유형
  • 구독자는 데이터를 요청하고 시작하고 수신하는 데이터의 양을 제어한다.
  • Subscriber가 없으면 게시가 아예 되지 않기 때문에 작업을 주도하는 것으로 생각할 수 있다.

Operator (연산자)


  • Publisher Protocol과 Subscriber Protocol을 모두 채택하는 클래스이다.
  • 게시자 구독 및 모든 구독자에게 결과 보내기를 지원한다.
  • Publisher가 데이터를 제공하고 Subscriber가 요청한 데이터를 처리, 반응 및 변환하기 위해 체인을 만들 수 있다.
  • Operator는 값 또는 유형을 변환하는데 사용되며, 스트림을 분할 또는 복제, 병합할 수도 있다.
  • 항상 출력/실패 유형의 조합으로 정렬되어야 한다.
  • 유형이 올바르지 않으면 컴파일러에서 오류가 발생한다.

Reference

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

 

Apple Developer Documentation

 

developer.apple.com

https://www.hohyeonmoon.com/blog/combine-introduction/

 

SwiftUI와 찰떡궁합인 Combine 소개 | Hohyeon Moon

Hohyeon Moon iOS developer. Code for a happier life. Resume

www.hohyeonmoon.com

https://heckj.github.io/swiftui-notes/

 

Using Combine

A common starting point is composing pipelines, leveraging existing publishers, operators, and subscribers. A number of examples within this book highlight various patterns, many of which are aimed at providing declarative responses to user inputs within i

heckj.github.io

https://todayssky.tistory.com/8?category=984240 

 

SwiftUI - Combine (2) 핵심 개념 (Publisher, Subscriber, Operator, Subject)

Publisher(게시자) 요청 시 데이터를 제공해줌 구독이 없는 경우 Publisher는 데이터를 제공하지 않음 두 가지 유형을 제공함(Outpt Type, Failure Type) Subscriber(구독자) 구독자는 데이터를 요청하고 Publishe..

todayssky.tistory.com

 

'iOS > Swift' 카테고리의 다른 글

[Swift] Class와 Struct의 차이  (0) 2022.11.09
[Swift] extension과 상속의 차이  (0) 2022.11.09
[Swift] Combine - Scheduler  (0) 2022.06.07
[Swift] Combine - Subject  (0) 2022.06.07
[Swift] Combine - Publisher  (0) 2022.06.07
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함