Какова самая большая разница между NSURLConnection и NSURLSession

NSURLSession - это новый сетевой SDK, чем NSURLConnection от Apple. 3-й старый вариант - это CFNetwork.

Вопрос здесь заключается в том, чтобы выяснить самую большую разницу между ними, чтобы понять, почему Apple так развивается.

Спасибо

Ответы

Ответ 1

Вся модель отличается. NSURLSession разработан в предположении, что у вас будет много запросов, которые нуждаются в подобной конфигурации (стандартные наборы заголовков и т.д.) И значительно облегчат жизнь, если вы это сделаете.

NSURLSession также обеспечивает поддержку загрузки фонограмм, что позволяет продолжать загрузку ресурсов, пока ваше приложение не работает (или когда оно находится в фоновом режиме на iOS). Для некоторых случаев использования это также крупная победа.

NSURLSession также обеспечивает группировку связанных запросов, что позволяет легко отменить все запросы, связанные с определенным рабочим модулем, например, отменять все нагрузки, связанные с загрузкой веб-страницы, когда пользователь закрывает окно или вкладку.

NSURLSession также обеспечивает более удобные интерфейсы для запроса данных с использованием блоков, поскольку позволяет сочетать их с методами делегирования для выполнения пользовательской проверки подлинности, обработки переадресации и т.д., тогда как с NSURLConnection, если вы вдруг поняли, что вам нужно делать эти вам пришлось реорганизовать ваш код, чтобы не использовать обратные вызовы на основе блоков.

Ответ 2

NSURLConnection

Группа взаимосвязанных компонентов, которые формируют систему загрузки URL-адресов: NSURLRequest, NSURLResponse, NSURLProtocol, NSURLCache, NSHTTPCookieStorage, NSURLCredentialStorage и его тезку, NSURLConnection

Объекты NSURLRequest передаются объекту NSURLConnection. Делегат (в соответствии с прежними неофициальными и протоколами) отвечает асинхронно, как NSURLResponse, и любые связанные NSData отправляются с сервера

Прежде чем запрос будет отправлен на сервер, будет использоваться общий кэш, и в зависимости от политики и доступности кешированный ответ может быть возвращен немедленно и прозрачно. Если кешированный ответ не доступен, запрос выполняется с возможностью кэширования его ответа для любых последующих запросов. В процессе согласования запроса на сервер этот сервер может выдавать запрос проверки подлинности, который либо обрабатывается автоматически общим хранилищем файлов cookie, либо хранилищем учетных данных, либо делегатом соединения. Исходящие запросы также могут быть перехвачены зарегистрированным объектом NSURLProtocol, чтобы при необходимости легко изменять поведение при загрузке.

NSURLSession

относится к группе взаимозависимых классов, в дополнение к одноименному классу NSURLSession. NSURLSession состоит из тех же элементов, что и раньше, с NSURLRequest, NSURLCache и т.п., Но заменяет NSURLConnection на NSURLSession, NSURLSessionConfiguration и три подкласса NSURLSessionTask: NSURLSessionDataTask, NSURLSessionUploadTask и NSURLSessionDownloadTask.

NSURLSessionTask - это абстрактный подкласс с тремя конкретными подклассами, которые используются напрямую: NSURLSessionDataTask, NSURLSessionUploadTask и NSURLSessionDownloadTask. Эти три класса инкапсулируют три основные сетевые задачи современных приложений: выборка данных, таких как JSON или XML, а также загрузка и загрузка файлов. подробнее