Ответ 1
AFHTTPSessionManager
использует задачи вместо операций (NSURLSessionDataTask
, в частности), поэтому вы не можете установить очередь операций.
Как вы можете видеть в реализации этого класса, задачи сразу же запускаются ([task resume]
) и не добавляются в какую-либо очередь.
Следовательно, и, к сожалению, нет способа встроенного AFNetworking установить ограничение числа одновременных задач с помощью AFHTTPSessionManager
.
Возможные альтернативы:
- Используйте
AFHTTPRequestOperationManager
вместо этого (это то, что я делаю) - Создайте подкласс
NSOperation
, у которого есть задача как свойство, и запустите задачу в методе[operation start]
вашего подкласса - Создайте серийную очередь Grand Central и создайте и запустите задачи в этой очереди
-
Если ваши запросы находятся на одном хосте, напрямую обращайтесь к опции
HTTPMaximumConnectionsPerHost
в системе загрузки URL-адресов, например:[NSURLSessionConfiguration defaultSessionConfiguration].HTTPMaximumConnectionsPerHost = 4;
Этот подход имеет ряд предостережений, которые обсуждаются в документации Apple.
Если вы закончите делать # 2, отправьте его как запрос на перенос в AFNetworking - это было бы приятным дополнением.