iOS 개발/Combine

iOS 개발/Combine

[Combine] combine 정리2 (sink, handleEvents, receive)

sink handleEvents(receiveOutput: ) receive(on: ), subscribe(on: ) 1. sink 애플 개발자 문서를 보면 sink 란 클로저 기반의 동작이 있는 subscriber를 절대 실패하지 않게 하는 publisher와 연결하는 것 그렇기 때문에 에러 타입은 Never 일때만 가능(그래서 회사 subject 에러 타입이 죄다 Never인 것) func sink(receiveValue: @escaping ((Self.Output) -> Void)) -> AnyCancellable Return Value 수신 된 값의 할당을 종료할 때 사용하는 Cancellable 인스턴스를 리턴한다. 결과를 할당해제 한다면 sumbscription stream을 해제하게 된다. ..

iOS 개발/Combine

[Combine] Operater란? (1)

Combine을 그래도 공부하다 보니까 이제서야 기본적인 틀이 갖춰진 것 같다. 이때까지 비동기 프로그래밍을 할 줄 안다고 이력서에 거짓말을 치고 있었다는 것 또한 깨닫게 되었다..허허허허허헣 Combine은 다음과 같이 크게 3가지로 이루어져 있다고 말했다. 1. Publisher 2. Subscriber 3. Operator Publisher, Subscriber에 관련된 내용은 어느정도 이해가 됐기 때문에 Operator의 정의에 대해서 알아보자 Operator는 그림과 같이 Publisher가 이벤트를 방출할 때 그 이벤트를 가공해서 Subscriber에게 전달해주는 역할을 한다. 좀 더 자세히 설명하면 다음과 같다. - Publisher 프로토콜을 채택한다. - 선언적이므로 값 타입이다. - 값..

iOS 개발/Combine

[Combine] Publisher Future와 CompletionHandler의 차이

Apple에서는 프로토콜로 미리 구현한 Publisher가 존재한다. 오늘은 해당 Publisher에 대해 살펴보고, 그 중 Future에 대해 자세히 알아보는 시간을 갖고자 한다. Publisher를 간략하게 설명하면, Subscription을 만들고 Subscriber들에게 이벤트를 방출하는 타입을 위한 프로토콜이다. 그리고 Apple에서 이러한 Publisher를 프로토콜로 미리 구현했는데, 다음과 같다. 1. Just 2. Future 3. Deffered 4. Empty 5. Fail 6. Record 7. AnyPublisher 회사 코드에서 자주보이는 것들은 Future, AnyPublisher정도 였던 것 같은데 생각보다 많은 Publisher들이 존재했다. 오늘은 간단하게 Just를 살펴..

iOS 개발/Combine

[Combine] CurrentValueSubject & PassthroughSubject 예제(2 - 1)

앞서 살펴보았던 예제들 말고도 조금 다른 예제들도 봐야 내가 이해할 것 같아서 조금 더 알아보도록 하겠다. CurrentValueSubject 예제 // subject 생성 let currentValueSubject = CurrentValueSubject("기본값") // subscriber1 currentValueSubject .sink(receiveCompletion: { print("1 번째 completion: \($0)") }, receiveValue: { print("1 번째 value: \($0)") }) // subscriber2 currentValueSubject .sink(receiveCompletion: { print("2 번째 completion: \($0)") }, receiveV..

iOS 개발/Combine

[Combine] Subject 정의 및 예제(2)

저번에 살펴보았던 Publisher와 Subscriber에 이어서 Subject에 대해 살펴보도록 하겠다. 회사에서 개발된 코드의 VM에는 CurrentValueSubject, PassthroughSubject가 즐비하게 늘어서 있기 때문에 무적권 알아둬야 할 것 같다.. Subject란? subject는 외부 발신자가 element를 publish할 수 있는 방법을 제공하는 publisher이다. 그냥 publisher라고 이해해보자.. 이러한 Subject는 Publisher 프로토콜을 채택하고 있다. Combine에는 미리 만들어진 Subject가 2가지 존재한다. 1. CurrentValueSubject 2. PassThroughSubject CurrentValueSubject란? single v..

iOS 개발/Combine

[Combine] Publisher & Subscriber란?(1)

현재 다니고 있는 회사에서는 UIKit + Combine을 활용한 앱을 개발하고 있다. 따라서 이제껏 Combine을 써오긴 했지만 뭐가 뭔지도 모르고 항상 쓰고 있어서 이번에는 꼭 깊게 공부를 해보려고 다짐하며 글을 쓰게 되었다. 진짜 이번에도 안하면 내가 사람이 아니지 Combine 5가지 프로토콜 1. Publisher 2. Subscriber 3. Subject 4. Scheduler 5. Cancellable Publisher란? Publisher는 프로토콜. 타입이 시간에 따라 일련의 값을 전송할 수 있음을 선언한다. Publisher는 하나 이상의 Subscriber 인스턴스에게 element를 제공한다. Publisher는 receive(subscriber:) 메소드를 구현해 subscri..

iOS 개발/Combine

[Combine] Combine 정의(0)

프로젝트 쉽고를 SwiftUI로 진행하는 것을 채택하고 비동기 프로그래밍으로 Combine을 채택했었다. 우선, RxSwift가 아닌 Combine을 채택한 이유는 SwiftUI와 Combine이 굉장히 궁합이 좋다고 알고 있었기 때문이다. 또한 Combine은 Apple에서 2019년에 만든 새로운 프레임워크이며, RxSwift의 애플 버젼이기 때문에 미래에 많이 사용될 것 같아서가 주된 이유이다. 이러한 이유로 Combine을 사용했고, 이에 대해 내용을 정리해보고자 한다. Combine 주요 구성 요소 Publisher Subscriber 객체에 변경되는 값을 내보낼 타입을 선언하기 위한 프로토콜이다. Output, Failure 타입이 제네릭으로 구현되어있다. Subscriber Publisher..

bamtorii
'iOS 개발/Combine' 카테고리의 글 목록