일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- IOS
- 파이썬중급
- 인프런
- swift
- Python3
- 스위프트
- 파이썬
- SwiftUI
- uikit
- IOS프로그래밍
- 인프런파이썬강의
- 토플
- 인프런강의
- JS
- 토플공부수기
- 자바스크립트
- 파이썬중급강의
- rxswift
- 유학토플
- 파이썬웹크롤링
- nodeJS
- 웹크롤링
- 리프2기
- 인프런파이썬
- 노드JS
- 인프런오리지널
- 카카오톡채팅봇
- 교환학생토플
- 프로그래머스
- 우리를위한프로그래밍
- Today
- Total
목록2024/07 (2)
먹고 기도하고 코딩하라
원래 비동기 작업 처리에 RxSwift를 주로 이용해서 앱을 만들었는데, 올해부터는 Swift Concurrency를 주로 사용해서 비동기 작업을 하고 있다. 개인적으로 Combine은 기존에 RxCocoa를 사용하던 UI 작업이나 비동기 작업 결과를 가공하는 데에 쓰기 좋고, async-await은 통신 작업과 같이 비동기 작업에서의 RxSwift를 대체하는 느낌이 강하다고 생각한다.하반기 시작하면서 회사 앱에도 Swift Concurrency를 도입해서 기존 컴플리션 핸들러(!)를 사용해서 깊은 depth를 가진 코드를 변경하고자 통신부를 async-await 사용할 수 있도록 감싸는 작업을 했다. 기존 통신 로직은 이랬다.Requester를 만든다. 필요한 헤더, 베이스 URL, 쿼리, 바디 등은 ..
결론만 먼저 쓰자면, metatype이 되는 그 클래스의 init에 required를 붙여주면 해결되는 문제다.그런데 왜 그래야 할까? 이유는 맥락과 차근차근 설명하는 걸로~ 기존에 쓰던 통신 코드를 async-await처럼 사용할 수 있을까 고민하다가 기존 Requester 객체에서 complete 컴플리션 핸들러와 failed 컴플리션 핸들러를 continuation resume하는 것으로 변경하면 되겠다는 생각에 그렇게 수정했다. (추후 포스팅 예정)통신에 앞서, 먼저 필요한 옵션을 생성하도록 되어 있다. 이 옵션은 프로토콜을 준수한 구체 클래스를 생성해서 집어넣는다. 엔드포인트, 쿼리, 바디 등 여러 가지 옵션을 포함한다. 그런데 엔드포인트만 지정하는 기본 옵션이라면 API 클래스마다 이 옵션까지..