SwiftUI로 iOS개발을 하다보면 자연스럽게 Combine을 접하게 됩니다. 사실 Combine에 대해 정확한 개념이 없더라도 개발하는데에 있어서 크게 무리가 없었어요. 하지만 큰 프로젝트를 진행하면서 시간의 흐름에 따른 값 처리 같은 부분, 코드의 퀄리티 등을 높이기 위해 Combine을 깊게 학습할 필요가 있다고 생각이 들어 Combine에 대한 공부를 시작해 보려고 합니다.
이번 글에서는 Combine에 대한 간단한 정의? 로 적어볼까 합니다!
Combine?
Apple에서는 Combine을 다음과 같이 설명합니다.
- 시간의 흐름에 따라 발생하는 이벤트를 처리하기 위한 Swift API
Combine은 RxSwift와 유사한 Reactive Programming 라이브러리 입니다.
함수형 Reactive Programming
함수형 프로그래밍을 하기 위한 가장 대표적인 함수로 map, filter, reduce가 있습니다.
Combine은 이러한 함수들을 모두 지원하며 스트림을 분할하고 병합하는 기능이 포함되어 있습니다. 그래서 스트림을 통해 흐르는 데이터를 변환하는 작업까지 함수형 프로그래밍으로 만들 수 있게 됩니다.
Combine의 관찰자 패턴은 단일 객체를 감시하여 변경 및 업데이트 알림을 제공합니다. 시간이 지남에 따라 이러한 알림으로 개체 스트림을 구성합니다. 또한 단일이 아닌 변경되는 둘 이상의 요소를 관찰하는 논리로 만들 수 있습니다. 그 외에도 일부는 실패 할 수 있는 추가 비동기 작업을 수행하기도 합니다. 타이밍에 따라 스트림의 콘텐츠를 변경하거나 컨텐츠의 타이밍을 변경할 수 있고 이러한 이벤트 스트림의 흐름, 타이밍, 오류 발생을 처리하고 시스템이 이러한 모든 이벤트에 응답하는 방식을 조정하게 됩니다.
우리는 사실 이미 Combine을 사용하고 있다.
Combine은 Apple에서 지원하는 다른 프레임워크 중 일부에서 활용하고 있습니다. 예를 들면 Foundation의 NotificationCenter, URLSession, Timer 등...
언제 Combine을 사용해야 할까?
- 다양한 입력에 반응하는 무언가를 설정하는 경우
너무 포괄적인 문장이지만 위에 대한 경우에 Combine을 사용하기가 가장 자연스럽다고 합니다. 사실 유저 인터페이스에 관련된 거의 대부분의 상황이 될거 같네요.
Combine은 이를 한단계 더 발전시켜 속성을 감시하고, 객체를 바인딩해주며, UI까지 컨트롤할 수 있게되어 더 높은 수준의 이벤트 전송과 수신, 거의 모든 Apple의 기존 API 시스템과 통합을 지원합니다.
Combine으로 할 수 있는 대표적인 작업들
- 필드에 입력한 값이 유효한 경우에만 Submit 버튼이 활성화되도록 설정
- 비동기작업을 수행하고 반환된 값을 사용하여 View를 업데이트할 방법과 대상을 선택할 수 있음
- 사용자가 텍스트필드에 동적으로 입력하고 입력한 내용을 기반으로 사용자 인터페이스 보기를 업데이트함
가장 기본적인 예들이며 그 외에 가장 중요한 비동기 작업의 오류 처리가 있습니다.
'ios > Combine' 카테고리의 다른 글
Swift - Combine의 Publisher 알아보기 Just, Future, Fail, Empty, Deferred, Sequence (0) | 2022.02.08 |
---|---|
Swift - Combine 요약 (Publisher, Operator 종류) (0) | 2022.02.04 |
SwiftUI - Combine (3) Combine의 생명 주기(Life Cycle) (0) | 2022.01.21 |
SwiftUI - Combine (2) 핵심 개념 (Publisher, Subscriber, Operator, Subject) (0) | 2022.01.20 |