Daily iOS
동시성

동일 URL 다운로드 합치기

사진 그리드에서 여러 셀이 같은 사진 URL을 동시에 요청하지만 네트워크 다운로드는 한 번만 해야 합니다. actor 안에서 in-flight Task를 어떻게 보관해 요청을 합치겠습니까?

면접관은 이 답을 어떻게 들을까요? 넘어갈지, 더 물어볼지, 떨어뜨릴지 알려 주고, 걸리는 문장은 콕 집어 줘요. 점수는 그대로예요.
짧은 답 보기

actor 안에 URL을 키로 하는 [URL: Task<UIImage, Error>] 딕셔너리를 두고, 요청이 오면 같은 URL의 Task가 이미 있으면 그 Task의 value를 await하고, 없으면 새 Task를 만들어 먼저 딕셔너리에 넣은 뒤 await한다. 두 번째 셀은 다운로드를 시작하지 않고 첫 Task의 결과를 같이 받는다.

받은 질문 공유