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)
}

호환성

  • Xcode 13.2부터 async/await의 backward compatibility를 지원합니다.
  • iOS 13, macOS 10.15, watchOS 6, tvOS 13부터 async/await 사용이 가능합니다.

참고