Swift 5.5의 async/await
- Swift 5.5에서 추가적인 비동기 프로그래밍 방법인
async/await
가 등장했습니다. - 이는 Swift에서 비동기 프로그래밍을 할 때 있었던 몇 가지 문제를 해결했습니다.
기존 문제점
Swift에서 비동기 프로그래밍을 할 때는 다음과 같은 문제점이 있었습니다.
- Nested closures로 코드가 복잡해집니다.
- 에러 핸들링 코드가 장황해집니다.
- 코드를 이해하기 어려워 실수하기 쉽습니다.
해결
async/await
로 이러한 문제를 해결하고 간편하게 코드를 작성할수 있게되었습니다.- 다음과 같이
fetchWeatherHistory
이후에upload
가 되어야 하는 경우에도async/await
로 해결 할 수 있습니다.
func fetchWeatherHistory() async -> [Double] {}
func upload(result: Double) async -> String {}
func processWeather() {
let records = await fetchWeatherHistory()
let response = await upload(result: average)
}
- 더 구체적인 사용 예시는 Combine에서 async/await로 변경하기를 확인해주세요.
호환성
- Xcode 13.2부터 async/await의 backward compatibility를 지원합니다.
- iOS 13, macOS 10.15, watchOS 6, tvOS 13부터 async/await 사용이 가능합니다.