У меня есть массив фотографий, которые нужно загрузить, но функция загрузки может загружать только одну фотографию за раз. Мне нужно убедиться, что функция загрузки завершена, прежде чем я вызову ее для другой фотографии. Я создаю .initialyInactive DispatchQueue, и очередь активируется в блоке завершения функции загрузки. Это просыпается, и фотографии загружаются, но мой вопрос, как отменить процесс загрузки? Можно ли как-то удалить неактивированные очереди?
Мой код logi c выглядит примерно так ..
func downloadPhoto(photo: Photo, completion: (_ success: Bool) -> Void) {
... completion(true) ..
}
for photo in photos {
let queue = DispatchQueue(label: "Download queue\(counter)", qos: .userInitiated, attributes: .initiallyInactive)
self.inactiveQueues[counter] = queue
queue.async {
self.downloadPhoto(photo: photo) { (success) in
nextQueue?.activate()
if success {
...
} else {
...
}
}
}
Ant и другое решение моей проблемы тоже отлично. Спасибо.