TIL 11: 다중 비동기 완료 처리를 위한 dispatch_group
TL;DR
- 다중 비동기 처리가 완료되는 시점에 후속 처리를 하고 싶다면,
간단히dispatch_group
시리즈를 활용할 수 있다.
모든 이미지 다운로드가 완료 됐을 때, 로딩바 숨기기
동적으로 화면에 이미지를 보여주기 위해 다운로드가 필요할 때가 있다. 그때 많이 사용하는 방식은 각 이미지가 다운로드될 때마다 이미지 뷰에 표시하도록 해서 로딩바가 표시되더라도 각 이미지 뷰에 표시하도록 하는 것이다. 그런 처리는 일반적인 비동기 처리로 손쉽게 할 수 있다.
하지만, 이번에 새로운 요구사항이 생겼다. 모든 이미지가 다운로드될 때까지 중앙에 로딩바를 표시하고, 모두 완료되고 나서 로딩바를 숨긴 후 다른 동작을 할 수 있도록 처리하는 것이다. 이것을 위해서는 각 비동기 처리(이미지 다운로드)가 완료되는 시점을 알아야 한다.
iOS에서 비동기 처리를 위한 방법으로 크게 두 가지가 있다.
Operation
시리즈와 dispatch
시리즈이다.
이번에는 간단하게 모든 이미지 다운로드가 완료됐을 때 로딩바를 숨기면 되므로, 비교적 단순한 dispatch
시리즈를 이용했다.
그 중에서 dispatch_group
시리즈를 이용하면, 각 dispatch
작업들을 그룹화하고
완료되는 시점에 notify
함수에 정의한 동작을 수행하도록 할 수 있다.
이것도 한 번 시간을 내어 글로 정리해야겠다.
정말 정리할 글이 많다… 🤪