TIL 11: 다중 비동기 완료 처리를 위한 dispatch_group

TL;DR

  • 다중 비동기 처리가 완료되는 시점에 후속 처리를 하고 싶다면,
    간단히 dispatch_group 시리즈를 활용할 수 있다.

모든 이미지 다운로드가 완료 됐을 때, 로딩바 숨기기

동적으로 화면에 이미지를 보여주기 위해 다운로드가 필요할 때가 있다. 그때 많이 사용하는 방식은 각 이미지가 다운로드될 때마다 이미지 뷰에 표시하도록 해서 로딩바가 표시되더라도 각 이미지 뷰에 표시하도록 하는 것이다. 그런 처리는 일반적인 비동기 처리로 손쉽게 할 수 있다.

하지만, 이번에 새로운 요구사항이 생겼다. 모든 이미지가 다운로드될 때까지 중앙에 로딩바를 표시하고, 모두 완료되고 나서 로딩바를 숨긴 후 다른 동작을 할 수 있도록 처리하는 것이다. 이것을 위해서는 각 비동기 처리(이미지 다운로드)가 완료되는 시점을 알아야 한다.

iOS에서 비동기 처리를 위한 방법으로 크게 두 가지가 있다. Operation 시리즈와 dispatch 시리즈이다. 이번에는 간단하게 모든 이미지 다운로드가 완료됐을 때 로딩바를 숨기면 되므로, 비교적 단순한 dispatch 시리즈를 이용했다.

그 중에서 dispatch_group 시리즈를 이용하면, 각 dispatch 작업들을 그룹화하고 완료되는 시점에 notify 함수에 정의한 동작을 수행하도록 할 수 있다.

이것도 한 번 시간을 내어 글로 정리해야겠다.
정말 정리할 글이 많다… 🤪

TIL 12: iOS에 Auto Layout이 있다면, Android에는 ConstraintLayout이 있다! TIL 10: 폰트를 적용했는데 뜬금없는 패딩이 들어가 있다면?