Описание тега nsurlsessiondownloadtask

NSURLSessionDataTask - это конкретный подкласс NSURLSessionTask. Методы в классе NSURLSessionDataTask задокументированы в Справочнике по классу NSURLSessionTask.

NSURLSessionDataTask ведет себя иначе, чем другие подклассы, несколькими тонкими способами:

  • Объект NSURLSessionDataTask возвращает данные непосредственно в приложение, а не через файл (как это делает задача загрузки).
  • Во время загрузки данных тела (если ваше приложение их предоставляет) сеанс периодически вызывает метод делегата URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend: с информацией о состоянии. (Он также вызывает этот метод для задач загрузки.) После получения начального ответа сеанс вызывает метод делегата URLSession:dataTask:didReceiveResponse: Завершение Handler:, чтобы предоставить вашему приложению возможность преобразовать передачу в задачу загрузки в зависимости от возвращаемого значения. Тип MIME и другая информация.

  • Если ваше приложение преобразует передачу в задачу загрузки, сеанс вызывает метод делегата URLSession:dataTask:didBecomeDownloadTask:, чтобы предоставить вашему приложению новую задачу загрузки.

  • Во время передачи сеанс вызывает метод URLSession:dataTask:didReceiveData: своего делегата с объектами данных, содержащими биты данных по мере их получения. По завершении сеанс вызывает метод URLSession:dataTask:willCacheResponse: CompletionHandler: своего делегата, чтобы определить, следует ли кэшировать ответ.

  • Если предоставляется этот метод делегата, он должен вызывать предоставленную процедуру завершения; в противном случае у вашего приложения будет утечка памяти.

  • Если этот метод делегата не указан, по умолчанию используется политика кэширования, указанная в объекте конфигурации сеанса.

  • В отличие от задач загрузки, запросы, сделанные через объекты NSURLSessionDataTask, не могут быть возобновлены после их отмены.