본문 바로가기

iOS/Combine10

Creating custom combine Publisher(Operator) Combine에는 Publisher와 Subscriber라는 개념이 있다. Combine: framework that let you subscribe to things and get value from things "Things" = Publisher Publisher 자료형에는 Int, String, 등등 에러에는 아무 Swift Error type Subscriber: 소비자 (value를 받아들일 수 있는것) sink assign 특징 *Publisher는 value 를 바로 emit 하지 않고 subscriber의 demand 가 있어야 emit 한다. 일련의 동작과정 Subscriber -- (subscribe) --> Publisher Publisher 에서 receive(subscribe:).. 2021. 10. 4.
#18 Custom Publishers & Handling Backpressure 보호되어 있는 글 입니다. 2020. 11. 3.
#17 Schedulers 책을 읽어오면서 scheduler 를 파라미터로 사용하는 operator 들을 많이 보았다. 대부분의 경우 간편하게 DispatchQueue.main을 사용했었다. 개발자로써 DispatchQueue뿐만 아니라 global, concurrent queue 나 serial dispatch queue도 사용해 봤을 것 이다. 이번 장에는 이러한 dispatch queue 에 대해 전반적으로 알아본다. 그런데 왜 Combine 비슷한 새로운 컨셉이 필요할까? 실제 세상으로 나가서 combine schedulers가 어디에 쓰이는지 알아보자 이번 챕터에서는 왜 schedulers 컨셉이 등장했는지 알아본다. 어떻게 Combine 이 asynchronous event 와 action을 쉽게 다룰수 있는지 알아본다.. 2020. 11. 3.
#Chapter15 In Practice: Combine & SwiftUI SwiftUI 의 장점에 대한 내용 Declarative syntax view 는 계층에 따라 시각적으로 쉽게 파싱할 수 있다. (Hstack 안에 VStack 등등) view는 타입에 따라 파라미터를 가진다. (Text - String, HStack - spacing) view는 modifier들을 가진다. Cross-platform 각 플랫폼별 UI를 개발하는 통일화된 방법을 제시한다. 각각 플랫폼별 특징에 따라 튜닝만 해주면 된다. (Picker Controller) New memory model (view controller out) data model 과 view 를 싱크맞춰주기 위해서 view controller 가 필요했다. SwiftUI는 화면에 표시되는 UI 는 일종의 데이터에 대한 함수.. 2020. 11. 2.
#12 Key-Value Observing [출처:www.raywenderlich.com/books/combine-asynchronous-programming-with-swift/v2.0] 변화를 다루는 것은 Combine 의 핵심기능 입니다. subscriber를 통해 Publisher 를 구독(subscribe) 하여 비동기적 event 를 처리할 수 있게 해줍니다. 이전 챕터에서 assign(to:on) 을 배웠습니다. assign()은 주어진 객체에 대한 프로퍼티의 값(value)을 publisher가 매번 새로운 값을 emit 할 때 update 시켜줄 수 있습니다. 하지만 단 하나의 변수에 대해 변화를 관찰하려는 경우는 어떨까요? Combine 은 이런 경우에 있어 몇가지 옵션을 제공합니다. KVO-compliant를 만족하는 모든(A.. 2020. 10. 30.
#9 Networking [출처:www.raywenderlich.com/books/combine-asynchronous-programming-with-swift/v2.0]프로그래머로써 networking 작업을 많이 하게됩니다.backend 와 통신fetching datapushing updatesencoding and decoding JSONcombine은 이런 흔한 작업들을 declaratively 하게 수행할 수 있는 API 를 제공합니다.이런 API 들은 현대 앱의 2가지 부분에 도움을 줍니다.URLSessionJSON encoding and decoding through the Codable protocolURLSession extensionsURLSession은 network data 전송 작.. 2020. 10. 28.
"UI events are asynchronous" 글의 흐름 UI event async? -> async vs sync -> concurrency vs parallelism -> 멀티코어 vs 싱글코어 -> 멀티,싱글 쓰레드 Combine 을 공부하던 중 이런 문장이 있었다. Since most typical code performs some work asynchronously, and all UI events are inherently asynchronous, its impossible to make assumptions about which order the entirety of your app code will executed. 대부분의 일반적인 코드는 일부 작업을 비동기식으로 수행하고 모든 UI 이벤트는 기본적으로 비동기식이므로 앱 코드 전체가 .. 2020. 10. 28.
#3 Transforming Operators [출처:www.raywenderlich.com/books/combine-asynchronous-programming-with-swift/v2.0] 3장에서는 transforming operator에 대해서 배워봅니다. Transforming operator 는 publisher 로 부터 받은 값을 subscriber 가 쓸 수 있는 형태로 변형하는 작업을 합니다. Operators are publishers 콤바인에서 pulisher 로 부터 온 값에 operation을 수행하는 메서드를 Operators 라고 부릅니다. 각각의 operator는 publisher 를 반환합니다. 다시 말하자면 Operator 는 publisher로 부터 upstream value 를 받아와 값을 변형하고 downstre.. 2020. 10. 28.
#2 Publishers & Subscribers [출처:www.raywenderlich.com/books/combine-asynchronous-programming-with-swift/v2.0] 목차 Publisher Subscriber Cancellable 어떻게 동작하는지 custom subscriber 만들기 Future Subject Dynamically adjusting demand type erasure Challenge Keypoint Getting started playground starter project 설명 Hello publisher Combine 의 중심에는 publisher protocol 이 있다. 이 프로토콜은 하나 이상의 subscriber 들에게 연속되는 값을 계속해서 전송할 수 있는 타입이 필요로 하는 것들을 정의하.. 2020. 10. 27.
#1 Hello, Combine [출처:www.raywenderlich.com/books/combine-asynchronous-programming-with-swift/v2.0] 목차 비동기 프로그래밍 이란 Combine의 원천 Combine 기본 Combine의 장점 앱 아키텍쳐 샘플 프로젝트 요약 Declarative 하고 reactive 한 앱을 위한 Combine을 배워보자 애플의 말에 따르면 "The Combine framework provides a declarative approach for how your app processes events. Rather than potentially implementing multiple delegate callbacks or completion handler closures, you.. 2020. 10. 27.