TIL - 2024.05.08 수요일

· 성취/개선/학습한 내용 🏆

 기존 API 통신을 동기/비동기로 진행하는 코드를 생각해 보면 많은 클로저와 CompletionHandler로 인해 코드가 화살표처럼 보이는 형태로 만들어졌다. 이런 코드 작성 방식은 가독성을 저하시킨다. 또 에러핸들링에 있어서도 사람이 실수를 할 수 있고, 발생할 수 있는 에러 혹은 올바른 결과마다 핸들러를 작성해야 하는 번거로움이 있었다. 이런 문제를 해결하기 위해 Swift Concurrency가 나오게 되었다.

 간단하게 정리해 보자면 async 키워드를 사용해 이 메서드가 비동기로 동작할 함수라는 것을 알려준다. 그리고 통신을 하는 부분에서 await를 사용해 비동기를 동기처럼 작업할 테니, 응답이 올 때까지 그 코드에서 기다리게 하고, 그 후 응답이 오거나 일정 시간이 지나면 아래 코드가 실행되는 방식으로 메서드를 구성하게 된다. 그리고 이 메서드를 호출할 때는 Task를 사용한다. 또 GCD를 사용할 때 DispatchGroup을 활용하여 어떤 메서드의 작업이 끝나고 난 후 다른 작업을 하는 것처럼 async let과 taskGroup을 활용해서 같은 결과가 나오게 코드를 짤 수 있다.

 Swift Concurrency의 장점은 동기 코드와 같이 코드를 쓰기에 가독성이 좋다는 것이다. 협업할 때 다른 사람에게 내가 만든 코드를 잘 이해할 수 있게 하는 것이 굉장히 중요한데, 그래서 가독성이 좋은 코드를 짤 수 있다는 점은 굉장히 매력적인 것이라고 생각한다. 

  • Swift Concurrency
    • Async 
    • Await
    • Async let
    • Task
    • taskGroup

 

· 궁금한 내용과 부족한 내용⁉️🤔

  • concurrency를 공부하다보니 URLSession을 사용만 할 줄 알지, 제대로 어떻게 구성되어 있는지는 모른다는 생각이 들었다. 한번 더 공부해서 제대로 정리하고 넘어갈 필요가 있겠다.

 

 

 

'# TIL (Today I Learned)' 카테고리의 다른 글

TIL - 2024.05.10 금요일  (0) 2024.05.10
TIL - 2024.05.09 목요일  (0) 2024.05.09
TIL - 2024.05.03 금요일  (0) 2024.05.03
TIL - 2024.04.30 화요일  (0) 2024.04.30
TIL - 2024.04.29 월요일  (0) 2024.04.29