계발자 블로그
[Swift] Combine 본문
Combine이란?
combine은 비동기 작업을 간단하게 처리할 수 있는 Apple의 framework입니다.
iOS 13부터 지원하고 있습니다.
기존의 비동기 처리 방식들은 여러 방법을 조합해서 개발하다 보니 코드가 복잡해졌지만
combine으로 일관된 방식으로 비동기 처리를 할 수 있게 되었습니다.
Combine 주요 컴포넌트
- Publisher
- 데이터를 방출함
- ex:) NotificationCenter, URLSession, Timeremd
- Subscriber
- 구독자
- Publisher로부터 데이터를 받는 객체
- ex:) sink, assign
- Operator
- publisher에게 받은 값을 가공해서 Subscriber에게 제공
- ex:) map, filter, reduce, collect, combineLatest
- Subscription
- Subcriber가 Publisher와 연결됨을 나타냄
- Cancellable protocol을 따르고 있음 따라서, Subscription을 통해 연결을 Cancel 할 수 있음
- Subject (Publisher)
- send(_:) 메서드를 이용해서 이벤트 값을 주입시킬 수 있는 퍼블리셔
- 기존의 비동기 처리 방식에서 Combine으로 전환 시 유용함
- PassthroughSubject
- Subcriber가 요청하면 받은 값을 전달해주기만 함 전달한 값을 들고 있지 않음
- CurrentValueSubject
- Subcriber가 요청하면 최근에 가지고 있던 값을 전달하고 받은 값을 전달 함
- 전달한 값을 들고 있음
- @Published (Publisher)
- @Publisher로 선언된 프로퍼티를 Publisher로 만들어줌
- 클래스에 한해서 사용됨 (구조체에서는 안됨)
- $를 이용해서 Publisher에 접근할 수 있음
- Scheduler
- Scheduler는 언제, 어떻게 클로저를 실행할지 정해줌
- Operator에서 Scheduler를 파라미터로 받을때가 있음
- 작업에 따라 백그라운드 혹은 메인 스레드에서 작업이 실행 될 수 있게 도와줌
- Scheduler가 스레드 자체는 아님
- 2가지 Scheduler 메서드
- subscribe(on:) | publisher가 어느 스레드에서 수행할지 결정해 줌
- receive(on:) | operator, subscirber가 어느 스레드에서 수행할지 결정해 주는 것
'Swift' 카테고리의 다른 글
| [Swift] Class와 Struct (0) | 2024.05.24 |
|---|---|
| [Swift] Tuple(튜플) (0) | 2024.05.21 |
| [Swift] Collection (0) | 2024.05.20 |