Рекомендация при выборе между 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 может использоваться для аналогичного эффекта.