개발하는 뚝딱이

Combine - 1 본문

컴바인

Combine - 1

개발자뚝딱이 2020. 11. 3. 00:53

 

Combine이란?

시간에 따라 값을 처리할 수 있도록 만든 선언적인 Swift API를 제공하는 프레임워크.

operators를 결합하여 비동기 이벤트를 처리하도록 커스터마이징이 가능하다.

 

declarative programming 선언형 프로그래밍 ;  '무엇을'에 집중하며, '어떻게'는 추상화되어 있다.

참고 ; boxfoxs.tistory.com/430

 

 

Combine과 비동기

  비동기 처리를 통해 프로레스는 효율적으로 처리된다. 비동기 테스크의 순서는 코드로만 단정지어서 알 수 없고 시스템이 어떻게 로드하냐에 따라 변하게 된다. 비록 처리되는 테스크의 순서는 알 수 없지만, 좋은 비동기 프로그래밍 코드를 짤 수 있도록 하는 것이 Combine이다.

  Combine은 RxSwift와 같은 개념을 사용하고 있지만, 차이점이 여럿 있다. RxSwift는 iOS 8.0 이상에서 사용가능하며 오픈소스이고 Combine은 iOS13.0 이상에서 사용가능하며 애플이 개발한 API이다. RxSwift는 RxCocoa와, Combine은 SwiftUI와 바인딩 된다. iOS13 이상부터 쓰이므로 한동안 실사용 앱에 적용이 불가능하지만, 이후 빠르게 확산될 것이고 수요가 증가할 것이다.

 

RxSwift와 Combine의 자세한 비교는 ;

medium.com/gett-engineering/rxswift-to-apples-combine-cheat-sheet-e9ce32b14c5b

 

 

Combine의 주요 세 가지 요소

1. Publisher

- 값들을 Subscriber에게 전달하는 프로토콜

- 시간의 흐름에 따라 값을 순차적으로 전달한다

- Publisher.Output ; publisher의 output 값으로, publisher가 지정한 데이터형으로 생성된다

- Publisher.Failrue ; 실패할 경우 생성되는 에러 타입

 

2. Operator

- Publisher에서 정의된 메소드들

- opertaor끼리 결합되고 결합이 해제될 수 있다

- operator는 항상 input과 output을 가지는데 각각 upstream, downstream이라고도 불린다

 

3. Subscriber

- publisher의 체인 끝에서 값들을 받는 프로토콜

- sink ; 결과값과 completion을 받도록 클로저를 구현할 수 있도록 제공

- assign ; 커스텀 코드를 쓰지 않으며 output을 데이터 모델이나 UI control로 바로 바인딩함

 

 

 

 

참고 ;

책 - Combine: Asynchcombine asynchronous programming with swift

developer.apple.com/documentation/combine

'컴바인' 카테고리의 다른 글

Combine - 2  (0) 2021.02.02