У меня есть менеджер загрузок и OperationQueue, где maxCount равен 3, когда я начинаю загружать около 20 элементов, он успешно загружает 3 на 3, и когда я отменяю кого-либо из этих 3, запускается следующий.Но когда я отменяю первые 5-6 элементов, следующие элементы не начинают загружаться.Вот мой код.
private let queue: OperationQueue = {
let _queue = OperationQueue()
_queue.name = "download"
_queue.maxConcurrentOperationCount = 3
return _queue
}()
вот словарь для хранения текущих операций
fileprivate var operations = [Int: DownloadOperation]()
вот как я создаю операцию
let operation = DownloadOperation(session: downloadTask)
operations[operation.task.taskIdentifier] = operation
queue.addOperation(operation)
вот методдля отмены
public func cancelDownload(forUniqueKey key:String?) {
let downloadStatus = self.isDownloadInProgress(forUniqueKey: key)
let presence = downloadStatus.0
if presence {
if let download = downloadStatus.1 {
operations[download.downloadTask.taskIdentifier]?.finish()
operations[download.downloadTask.taskIdentifier] = nil
ongoingDownloads.removeValue(forKey: key!)
}
}
}
, когда я вызываю этот метод для цикла for для первых 4-6 элементов, следующие не начинают загрузку.