티스토리 뷰
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
- Swift
- IOS
- Custom
- ChatGPT
- Git
- Generic
- rxswift
- CodingTest
- kakao
- AWS Fargate
- frame과 bounds 차이
- onTapGesture
- Xcode
- 카메라
- Protocol
- AWS
- docker
- navigation
- ObservedObject
- SwiftUI
- file private
- MVVM
- 의미있는이름
- strcut
- Login
- 곰튀김
- tabview
- OCR
- enumerations
- delegate
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |