티스토리 뷰
728x90
Publishers
Publisher 가 방출하는 3가지 타입
- Publisher의 제네릭 output 타입의 값
- successful completion
- Publisher의 실패 타입의 completion error
Publisher는 0개 이상의 출력 값을 방출할 수 있고, 성공 또는 실패로 완료되면 다른 이벤트를 방출하지 않습니다.
Publisher 의 역할
delegate패턴을 사용하거나 completion callback을 주입하는 대신 Publisher를 사용할 수 있습니다.
Publisher의 가장 좋은 기능 중 하나는 오류 처리가 내장되어 있다는 것입니다.
Publisher 프로토콜은 두 가지 타입에 대해 일반적입니다.
- Output은 Publisher의 출력 값의 타입 입니다.
Int Publisher라면, String타입 이나 다른타입 값을 내보낼 수 없습니다. - Failure는 Publisher가 실패하면 던질 수 있는 오류 타입입니다.
Publisher가 절대 실패하지 않는다면, 실패하지 않는 타입 Never을 사용합니다.
Operators
Operators는 동일하거나 새로운 Publisher를 반환하는 Publisher 프로토콜에 선언된 메서드입니다.
추후 메서드를 연결해서 효과적으로 사용됩니다.
Subscribers
Combine은 데이터 스트림 작업을 쉽게 할 수 있는 두 개의 Subscriber를 제공합니다.
Subscriber가 없으면 Publisher에서 어떤 값도 방출하지 않습니다.
- sink
출력 값과 completion으로 받을 코드로 클로저를 제공할 수 있습니다.
거기에서, 받은 이벤트들을 마음대로 처리 할 수 있습니다. - assign
사용자 지정 코드 없이 결과 출력을 데이터 모델이나 UI 컨트롤의 일부 속성에 바인딩하여 키 경로를 통해 화면에 직접 데이터를 표시할 수 있습니다.
Cancellable 프로토콜이 있어 메모리 관리를 따로 하지 않아도 됩니다.
또는 [AnyCancellable] 이라는 컬렉션 프로퍼티를 사용하면 자동적으로 메모리가 해제될때 취소하고 해제 됩니다.
SwiftUI와 Combine을 같이 사용하게되면 ViewController가 필요없다고 한다..(굿..)
모델에서 뷰까지 리액티브 프로그래밍을 사용하면, 뷰를 제어하기 위해 특별한 컨트롤러가 필요하지 않습니다.
Combine 개념 마무리
- Combine은 시간이 지남에 따라 비동기 이벤트를 처리하기 위한 선언형,반응형 프레임워크이다.
- 비동기 프로그래밍을 위한 도구를 통합하고, 변경 가능한 상태를 처리하는것을 목표로 합니다.
- Combine의 주요 3요소
- Publisher - 시간흐름에 따라 이벤트를 방출합니다.
- Operators - 비동기적으로 처리하고 업스트림 이벤트들을 조작합니다.
- Subscribers - 방출되는 이벤트들을 구독하여 결과를 산출해 냅니다.
728x90
'iOS' 카테고리의 다른 글
[Combine] Chapter4: Filtering Operators (1) | 2022.11.03 |
---|---|
[Combine] Chapter 3: Transforming Operators (0) | 2022.10.28 |
[Swift] fatal Error (4) | 2022.09.25 |
[Swift] 고급연산자 (Advanced Operators) - 비트연산자 (0) | 2022.09.22 |
[Swift] 접근제어 (Access Control) (0) | 2022.09.17 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Swift 알고리즘
- Swift joined()
- swift reduce
- swift (programmers)
- Swift 프로그래머스
- Swift 프로퍼티
- swift property
- Swift Error Handling
- Swift inout
- Swift RIBs
- Swift
- Swift init
- 2023년 회고
- swift protocol
- Swift final
- swift 고차함수
- Swift ModernRIBs
- Swift Leetcode
- 원티드 프리온보딩
- ios
- Combine: Asynchronous Programming with Swift
- iOS error
- Swift 내림차순
- Swift joined
- removeLast()
- CS 네트워크
- swift programmers
- Class
- RIBs tutorial
- RTCCameraVideoCapturer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함