Рекомендация при выборе между AFHTTPRequestOperationManager и AFHTTPSessionManager

Так как AFNetworking 2.0 the AFHTTPClient исчез в пользу двух менеджеров: AFHTTPRequestOperationManager и AFHTTPSessionManager. В руководстве по миграции почти ничего не говорится о случаях, когда каждый из них предпочтительнее использовать. Насколько я вижу, базовое взаимодействие с RESTful JSON API может быть реализовано с использованием каждого из них отдельно.

Каковы наиболее подходящие случаи использования RequestOperationManager или SessionManager?

Ответы

Ответ 1

Они в основном эквивалентны, за исключением того, что AFHTTPSessionManager использует внутренне iOS 7/OS X 10.9 NSURLSession, поэтому его нельзя использовать в iOS 6. AFHTTPRequestOperationManager существует до тех пор, пока NSURLRequest не устареет.

Подробнее читайте здесь:

Итак, чтобы повторить: чтобы поддерживать новые API NSURLSession, а также NSURLConnection из старого, но не устаревшего и все еще полезного, основные компоненты AFNetworking 2.0 разделяются между работой запроса и задачами сеанса. AFHTTPRequestOperationManager и AFHTTPSessionManager обеспечивают аналогичную функциональность, с почти взаимозаменяемыми интерфейсами, которые могут быть легко заменены, если возникнет необходимость (например, портирование между iOS 6 и 7).

Обратите внимание, что это несколько различий между ними. AFHTTPSessionManager возвращает объекты NSURLSessionDataTask, которые не являются NSOperations. Это означает, что сложнее вставить их в очередь и установить зависимости между запросами.

Ответ 2

также см. примечания к подклассу для AFHTTPRequestOperationManager

Разработчики, ориентированные на iOS 7 или Mac OS X 10.9 или более поздние, которые широко используют веб-службу, рекомендуется подклассифицировать AFHTTPSessionManager, предоставляя метод класса, который возвращает общий одноэлементный объект, по которому в приложении могут быть доступны аутентификация и другая конфигурация.

Для разработчиков, ориентированных на iOS 6 или Mac OS X 10.8 или более ранних версий, AFHTTPRequestOperationManager может использоваться для аналогичного эффекта.