티스토리 뷰
SwiftUI를 좀 더 깊게 이해하고 사용하기 위해서는 Combine에 대한 이해는 필수적이라고 한다.
Combine 많이 들어는 봤지만 이번 기회에 제대로 정리해보자.
✏️ Combine
애플 공식 문서에서 Combine에 대해서 자세하게 설명해주고 있다.
Combine | Apple Developer Documentation
Customize handling of asynchronous events by combining event-processing operators.
developer.apple.com
Combine은 애플에서 제공하는 프레임워크로, 시간의 흐름에 따라 데이터를 처리하고 변환하는 데 사용된다.
이를 통해 application의 상태 변화를 추적하고, 데이터의 비동기적인 처리를 관리할 수 있다.
정리하자면 "비동기 일 처리를 비교적 간편하게 처리할 수 있도록 해주는 프레임워크"라고 할 수 있다.
또 "RxSwift의 apple 버전같은 느낌"이라고 한다. (사실 RxSwift 아직 공부안해서 무슨 느낌인지 모르겠다.....)
Combine에서 중요한 3가지 요소는 Publisher, Subscriber, Operator이다.
흐름은 Publisher가 데이터 생성 -> Subscriber가 처리 -> Operator가 데이터 조작하여 필요에 맞게 변환하는 형태이다.
1️⃣ Publisher
- 데이터를 생성하는데 사용 (일련의 값 생성, 외부 이벤트 수신 등)
- 값 또는 완료 및 오류와 같은 종료 이벤트를 Subscriber에게 전달할 수 있다.
- ex) Timer, NotificationCenter 등
2️⃣ Subscriber
- Publisher로부터 생성된 데이터의 각 이벤트(값, 완료, 오류)를 처리하는 역할
- Publisher에게 구독을 요청하고, 이를 통해 해당 이벤트에 응답할 수 있다.
- ex) 데이터 수신하여 UI 업데이트, 데이터 저장하거나 처리 등
3️⃣ Operator
- Publisher가 생성한 데이터를 변환하거나 조작하는 역할
- ex) Map, Filter 등
✏️ Combine 동작 방식
- Publisher 생성
- Subscriber 구독: 생성된 Publisher에 Subscriber가 구독을 요청한다.
- 데이터 흐름 전달: Publisher는 생성한 값 또는 외부 이벤트를 Subscriber에 전달한다.
- Operator 적용: Subscriber에 데이터가 전달되기 전에 Operator가 적용될 수 있다.
- Subscriber 처리: Publisher로부터 받은 데이터 처리
✏️ Combine 특징
- 비동기 프로그래밍: 비동기 작업 처리하는데 적합
- 데이터 흐름의 표현: Publisher 및 Subscriber를 사용하여 데이터 흐름을 정의하고, Operator를 사용해 데이터 변환하고 조작할 수 있다.
- 선언적 프로그래밍: 데이터 흐름의 정의와 조작을 간단하고 명확하게 표현
- 자동 구현: IBAction이나 delegate와 같은 옛 방식을 사용하는 것보다 자동으로 생성되는 코드가 많다.
- 코드의 퀄리티: 코드가 간결해져 가독성을 향상시키고, 유지보수를 용이하게 할 수 있다.
'스위프트 > SwiftUI' 카테고리의 다른 글
[SwiftUI] - ObservableObject 예제 (0) | 2024.03.12 |
---|---|
[SwiftUI] - Combine 예제 (0) | 2024.03.11 |
[SwiftUI] - NavigationBarTitle 스타일 (0) | 2024.02.29 |
[SwiftUI] - Navigation bar 제외한 background Color 설정 (0) | 2024.02.11 |
[SwiftUI] - Todo List 구현 (0) | 2024.02.07 |