combine을 사용하다보면, type erasure 역할을 하는 eraseToAnyPublisher를 많이 사용하게 되는데요. 오늘은 Combine framework에서 제공하는 eraseToAnyPublisher 공식 문서를 살펴보는 시간을 가져보겠습니다. eraseToAnyPublisher Overview eraseToAnyPublisher는 instance method이며, iOS13+에서 지원합니다. type erasure와 함께 publisher를 wrapping합니다. Declaration을 보면, Output, Failure 타입을 가진 AnyPublisher를 반환하고 있습니다. eraseToAnyPublisher는 downstream subscriber에게 publisher의 상세 타입..
오늘은 iOS의 Combine framework를 활용해서 UIView, UIButton(UIControl을 상속받는 애들)의 탭 이벤트(+ throttle publisher event)를 Custom Publisher를 만들어서 구독하고, UI와 바인딩해서 사용해보는 시간을 갖도록 합니다. 프로젝트는 UILabel, UIButon을 중앙에 배치시켰습니다. 이제 위에 있는 UILabel, UIButton에 탭이벤트를 적용시켜볼 예정입니다. ViewController.swift 초기 모습 생성한 ViewController 파일 초기 모습입니다. 임의의 이름으로 UIButton, UILabel (centerButton, centerLabel)을 생성했습니다. 그리고 Publisher 구독정보를 관리한 can..
Swift Concurrency를 API 요청 로직에 적용할때, 단일 요청뿐만 아니라 다수의 API 요청을 수행해야할 때가 있습니다. 이때 모든 API 요청을 Concurrent하게 진행하고, feeding(요청 결과를 실제 수신하는 과정)을 순차적으로 받는 방법을 사용하면 더욱 효율적인 비동기 작업을 수행할 수 있습니다. 이러한 것을 가능하게 해주는 개념 중 하나인 Structured Concurrency, async let에 대해서 코드를 함께 작성해보면서 알아보겠습니다. structured concurrency, async let 사용하여 다수의 API 요청 concurrent하게 처리하기 // try await을 사용하였기에 equifaxUrl로부터 결과 값을 수신받을때까지 suspend 된다. ..
iOS의 상태관리 기반 단방향 아키텍쳐인 TCA(The Composable Architecture)는 View에서 이벤트가 발생할때 ObservableObject 프로토콜을 준수하는 ViewStore에서 특정 이벤트에 대한 Action을 send 하고 이를 Reducer에서 처리하게 됩니다. Reducer에서는 이후 이벤트 처리를 위해 Effect를 반환하는데요. 이 Effect는 Combine framework의 Publisher로 되어있습니다. 다양한 Combine Opeartor를 사용할 수도 있는데요. Publisher를 구독하고 메모리 해제하는 코드는 어디에 있는지, 어떤식으로 돌아가고 있을지 보겠습니다. 먼저, iOS TCA가 이벤트 발생을 할때 어떤식으로 동작하는지 간단하게 알고 싶으싣다면,..
- Total
- Today
- Yesterday
- publisher
- 알고리즘
- 개발자문서
- SwiftUI
- swift 기초
- 컬렉션
- swift string
- 백준알고리즘
- 백준swift
- 알고리즘문제
- swift 문자열
- swift reduce
- 프로그래머스
- swift언어
- 부스트코스
- 자연어처리
- Collection
- swift
- Swift 알고리즘
- 김프매매
- Protocol
- CoreML
- swift알고리즘
- 프로토콜
- ios
- uikit
- swift문제
- 스위프트
- 프로그래머스swift
- createML
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |