안녕하세요, Achoo! 입니다.
오늘은 Async - Await로 먼저 비동기처리를 접한 사람으로서, 근래에 코딩하고, 공부하며 느낀 Combine에 대한 고찰들을 정리해보려 합니다.
따라서 먼저 Async - Await 이야기를 해봅시다.
Async - Await는 2021년 9월 Swift 5.5에서 등장했습니다.
https://www.hackingwithswift.com/articles/233/whats-new-in-swift-5-5
제가 본격적으로 SwiftUI를 이용하여 개발을 시작했을 땐, 이미 Async - Await를 통해서 간단하게 비동기처리가 가능했습니다.
따라서 다음 예제와 같은 코드들을 아주 기계적이고 숨쉬듯 써왔습니다.
func requestTranslate(sourceString: String, target: String) async throws -> String {
// ...
guard let url = URL(string: baseURL) else { return "" }
// ...
let (responseData, _ ) = try await URLSession.shared.upload(for: request, from: data)
let response: TranslateResponse = decodeData(responseData)
let translatedString = response.message.result.translatedText
return translatedString
}
제가 출시한 앱의 네트워크 코드 중 일부인데요.
SwiftUI, iOS 16 버전 타겟의 앱이었으며, 위 네트워킹 메소드를 통해 View에서 onAppear가 아닌 task 모디파이어로 뷰가 나타날때 비동기작업을 진행해주도록 하였습니다.
저는 적어도 위와 같은 방식의 비동기 처리에 몇 달은 찌들어있던 몸이었기에 Combine을 적용할 생각조차 없었지만, 뭔가 어렴풋이 머리 속에
"리액티브 프로그래밍을 위해선 Combine공부는 필수다!"
라는 생각을 가지고 있었기 때문에 Combine을 공부하고 코드를 작성해보았습니다.
그래서 Apple Developer Documentation을 샅샅히 파헤치기 시작합니다...그런데..........
애플 공식 문서 : 꿀팁 하나 준다. Swift 5.5 이후엔 async - await 만 하면 컴플리션 핸들러(콜백 함수, 클로저)랑 컴바인 안써도 댐 ㅋㅋ
(This eliminates the need for both conventional completion handler and Combine futures. ㅋㅋ)
공부 시작과 동시에 종료~~~~~(2부 있어요)
'iOS' 카테고리의 다른 글
Xcode 패키지 무한로딩 오류 (0) | 2023.05.07 |
---|---|
아랍어 Localization 추가 시 발생하는 아주 의외의 문제 (0) | 2023.05.07 |
FireStore에 JSON 파일 import하기(python) (0) | 2023.04.26 |
Awesome Korean Dictionary 해커톤 수상 (0) | 2023.02.03 |
Swift Async - Await, Combine 원만한 합의 부탁드리겠습니다.(2) (0) | 2023.01.31 |