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