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 사용이 가능합니다.

참고