iOS/Common

[Swift] 누구를 위하여 async/await는 울리나

TDCIAN 2023. 3. 22. 21:45

미쳤습니까 휴먼?

 

Q. Swift에 async/await가 도입된 시기는 언제이며, 무엇을 대체하기 위해 등장하였는지 알려줘

 

A. Swift에 async/await가 도입된 시기는 2021년 WWDC(애플의 개발자 대회)에서 발표되었습니다. 이는 Swift 5.5에서 새로 추가된 기능으로, 애플이 개발한 비동기 프로그래밍 모델입니다.

 

async/await는 Swift에서 비동기 코드를 작성하기 위한 새로운 방법으로, 기존의 GCD(Grand Central Dispatch)와 같은 비동기 프로그래밍 패턴을 대체하기 위해 등장했습니다. GCD는 불편하고 복잡한 코드를 만들기 쉬웠기 때문에, Swift에서는 간단하고 직관적인 코드를 작성할 수 있도록 async/await를 도입했습니다.

또한, async/await는 비동기적인 작업을 동기적인 코드처럼 작성할 수 있도록 지원하기 때문에, 코드 가독성과 유지 보수성을 높일 수 있습니다. 또한, Swift의 새로운 Actor 모델과 함께 사용하면, 안전하고 견고한 다중 스레드 코드를 작성하는 데 도움이 됩니다.

 

 

Q. 위 내용을 예시 코드로 설명해 줘

 

A. 예시 코드를 통해 async/await가 기존의 비동기 코드 작성 패턴보다 어떻게 직관적이고 간단한지 살펴보겠습니다.

기존의 비동기 코드 작성 패턴에서는 GCD의 DispatchQueue를 이용해서 작업을 비동기적으로 실행시키고, 작업이 끝난 후에는 completion handler를 이용해 결과를 처리했습니다. 이는 다음과 같은 형태로 나타낼 수 있습니다.

 

 

 

하지만 async/await를 이용하면 다음과 같이 간단하게 코드를 작성할 수 있습니다.

위 코드에서 async 키워드를 이용해 비동기 함수임을 선언하고, await 키워드를 이용해 비동기적인 작업이 끝날 때까지 기다리도록 합니다. 이를 통해 completion handler를 이용한 코드보다 더 직관적이고 간결한 코드를 작성할 수 있습니다.

 

 

Q. 순차적으로 실행되어야 하는 비동기 작업을 async/await를 활용해서 수행하는 코드를 보여줘

 

A. 순차적으로 실행되어야 하는 비동기 작업을 async/await를 활용해서 수행하는 코드는 다음과 같이 작성할 수 있습니다.

 

위 코드에서는 fetchData() 함수를 통해 데이터를 가져온 후, 이를 processData() 함수를 통해 비동기적으로 처리하고, 마지막으로 saveDataToFile() 함수를 통해 처리된 데이터를 파일에 저장합니다. 이렇게 async/await를 이용하면 비동기적인 작업이 순차적으로 실행되도록 할 수 있습니다.

 

 

Q. async/await를 사용하기 위해서는 Minimum Deployment Target이 몇이어야 하니?

 

A. async/await는 Swift 5.5 버전에서 도입되었습니다. 따라서, iOS, macOS, watchOS, tvOS 등의 애플 플랫폼에서 async/await를 사용하려면 Xcode 13 버전 이상과 함께 배포 대상을 iOS 15, macOS 12, watchOS 8, tvOS 15 이상으로 설정해야 합니다.

 

 

정보 출처: https://chat.openai.com/chat