Ios URLSessionDownloadTask调用用于同时下载多个文件时并不总是有效

Ios URLSessionDownloadTask调用用于同时下载多个文件时并不总是有效,ios,swift,Ios,Swift,我使用此代码同时下载多个资产,但是 偶尔代码会失败 我为此呼叫添加了重试,但这不是一个好的解决方案。 知道下载任务失败的原因吗 是否存在某种限制,例如并发任务的数量? 或者我应该使用特定的队列 @objc class Downloader : NSObject { @objc var fileUrl:URL @objc var destinationUrl:URL @objc var dispachGroup:DispatchGroup? @objc var optio

我使用此代码同时下载多个资产,但是 偶尔代码会失败

我为此呼叫添加了重试,但这不是一个好的解决方案。 知道下载任务失败的原因吗

是否存在某种限制,例如并发任务的数量? 或者我应该使用特定的队列

@objc class Downloader : NSObject {

  @objc var  fileUrl:URL
  @objc var  destinationUrl:URL
  @objc var  dispachGroup:DispatchGroup?
  @objc var  optionalAsset:Bool
  @objc var  retryCalled:Int
  var downloadTask:URLSessionDownloadTask? = nil

  @objc init(dispachGroup:DispatchGroup,fileURL: URL , destinationFileUrl: URL, optionalAsset:Bool) {
    self.dispachGroup = dispachGroup
    self.fileUrl = fileURL
    self.destinationUrl = destinationFileUrl
    self.optionalAsset = optionalAsset
    self.retryCalled = 0

  }

  @objc func stop() {
    downloadTask?.cancel()
  }

  @objc func preformDownload(delegate:URLSessionDownloadDelegate, delay:TimeInterval, timeout:TimeInterval) {

    let sessionConfig = URLSessionConfiguration.default
    let operationQueue = OperationQueue()
    let urlSession =  URLSession(configuration: sessionConfig, delegate: delegate, delegateQueue: operationQueue)
    var request = URLRequest(url: self.fileUrl)
    request.timeoutInterval = timeout
    self.downloadTask?.cancel()
    self.downloadTask = urlSession.downloadTask(with: request)
    self.downloadTask?.resume()
  }
}