안녕하세요. 밀쿄입니다. 오늘은 콤바인에서 연산자들 중에 어떤게 있는 지 알아보겠습니다. 먼저 collect() 입니다. 다음과 같은 Stream이 있습니다. [1, 2, 3, 4, 5].publisher .sink(receiveCompletion: { print($0)}, receiveValue: { print($0 )}) .store(in: &cancellable) //결과 1 2 3 4 5 finished 이 스트림에 collect을 사용해보겠습니다. [1, 2, 3, 4, 5].publisher .collect() .sink(receiveCompletion: { print($0)}, receiveValue: { print($0 )}) .store(in: &cancellable) //결과 [1, 2..
Publisher 시간이 지남에 따라 하나 이상의 값을 방출할 수 있는 Protocol 입니다. public protocol Publisher { associatedtype Output associatedtype Failure : Error func receive(subscriber: S) where S : Subscriber, Self.Failure == S.Failure, Self.Output == S.Input } Output: 내보내는 값의 타입 Failure: 내보내는 에러의 타입 ( 단, Error 프로토콜 채택 필수) receive(subscriber:) Subscription을 생성해서 Subscriber에게 값 전달 합니다. 이 때 이 Subscription이 실제적인 작업과 값 전달을 ..
안녕하세요. 밀쿄입니다. 오늘은 콤바인을 시작하기 전에 알면 좋을 것들을 살펴보겠습니다. (글의 순서가 너무 뒤죽 박죽이네요) 먼저 애플에서는 콤바인을 뭐라고 설명할까요? 시간에 따른 값들을 처리하기 위한 통합적이고 선언적인 API라고 공식 문서에는 되어있습니다.. 그럼 콤바인은 왜 필요할까요? 그 이야기를 위해서는 먼저 비동기 프로그래밍에 대해서 이야기 해야합니다. '비동기' 라는 단어를 들으면 흔히 네트워크 통신을 떠올릴 것이라고 생각합니다. 하지만 사실 네트워크에 국한하는 것은 옳지 않습니다 앱에서 일어나는 모든 동작은 비동기이기 때문입니다. 그렇다면 우리는 이러한 비동기처리방식을 어떻게 사용했을까요? 여태까지 우리가 알게 모르게 써온 Notification Center, Delegate, GCD(..
안녕하세요. 밀쿄입니다, 오랜만에 Combine 관련으로 글 쓰는 것 같네요. 오늘은 결합 연산자 중에 제일 많이 사용하게 되는 CombineLatest에 대해서 알아보겠습니다. 일단 조금 이상한 예제지만 CombineLatest 전후를 비교하기 위해서 예제를 하나만 비교해보겠습니다,. 두 개의 배열이 있고 이 배열이 count가 일정 갯수이상 되면 콘솔창에 메세지를 출력하는 예제입니다. 먼저 콤바인 없는 상태입니다. class TestClassWithoutCombine { var items = [String]() { didSet { self.isPass = items.count > 3 && items2.count > 1 } } var items2 = [String]() { didSet { self.is..
안녕하세요. 밀쿄입니다. 오늘은 콤바인에서 시퀀스에 대해서 알아보겠습니다. 시퀀스는 인자로 sequence라는 이름으로 시퀀스를 받습니다. 말에서 느껴지듯이 sequence인자는 지난 시간에 알아봤던 그 Sequence프로토콜을 채택하고 있어야합니다. 그럼 어떻게 작동하는 지 한 번 살펴보도록 하겠습니다. 참고로 이 놈은 Convenience Publishers가 아니므로 사용할 때는 앞에 Publishers라고 붙여줘야합니다 그럼 이제 코드를 살펴보도록 하겠습니다 Publishers.Sequence(sequence: [1,2,3]) .sink(receiveCompletion: { completion in switch completion { case .failure: print("FAIL") case ...
잠시 언급한 적 있는 Just에 대해서 알아보겠습니다. Just는 한 번만 실행되고 종료되어집니다. 끝입니다.하면 너무 재미없을테니 몇 가지를 조금 더 살펴보겠습니다 Just를 실행시키고 Jump to Definition을 실행시켜 보면 다음과 같은 소스를 얻을 수 있습니다. 일단 눈에 띄는 것은 제가 맨 처음 Just를 소개했을 때처럼 제너릭 구조체라는 것이 눈에 보입니다. 그 외에 눈에 보이는 것은 public func receive(subscriber: S) where Output == S.Input, S : Subscriber, S.Failure == Just.Failure 이 부분이 눈에 띕니다. 인자로 받는 값은 Subscriber을 채택하고 있어야하고 Just가 방출하는 값이랑 subscri..
정말 연속 포스팅은 처음이네요.. 오늘은 사담없이 바로 시작해보겠습니다 Scheduler 우리가 코딩을 하다보면은 쓰레드를 다뤄야할 일이 많습니다. 네트워크 작업이나, 연산이 많이 필요로 하는 작업은 백그라운드에서 돌려야하지만 화면과 관련된 UI 부분은 메인에서 사용해야합니다. 스케쥴러를 사용하면 일너 쓰레드를 제어할 수 있습니다. 쉽게 말하면 Scheduler는 쓰레드를 가르키는 말이겠네요 Before Combine 지난 시간에 만든 ImageDownloader 예제에서 쉽게 찾아볼 수 있습니다. DispatchQueue.global().async { //Code } DispatchQueue.main.async { //Code }바로 DispatchQueue.main 이나 DispatchQueue.gl..
안녕하세요 밀쿄입니다. 오늘은 어제 예고한대로 Cancellable에 대해서 알아보는 시간을 가져보도록 하겠습니다. 먼저 어제 예시를 다시 보자면 sink의 리턴값이 AnyCancellable입니다 AnyCancellable은 Cancellable란 프로토콜의 Type Erasure한 놈입니다. 그럼 Cancellable을 알면 되겠죠? https://developer.apple.com/documentation/combine/cancellable Cancellable - Combine | Apple Developer Documentation A publisher that provides an explicit means of connecting and canceling publication. develop..
- Total
- Today
- Yesterday
- 스위프트유아이
- combine
- AutoLayout
- swift
- 현업이그리운
- ErrorHandling
- programmers
- Queue
- 유니온파인드
- Apple
- SwiftUI
- 텔큐온
- 스택뷰
- 결합연산자
- SEQUENCE
- 자료구조
- iOSCombine
- MVC
- 스위프트
- CombineLatest
- 콤바인
- UIViewControllerRepresentable
- compactMap
- Just
- ios
- 알고리즘
- 스유
- BBIK
- replaceNil
- 삨
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |