我正在使用AFNetworking 3.0,它使用NSURLSessionDataTask
以及一个operationQueue(AFURLSessionManager
的属性),它被用作NSURLSession
如此简单地把
AFURLSessionManager.operationQueue
== NSURLSession.delegateQueue
AFNetworking 3代码
self.operationQueue = [[NSOperationQueue alloc] init];
self.operationQueue.maxConcurrentOperationCount = 1;
self.session = [NSURLSession sessionWithConfiguration:self.sessionConfiguration delegate:self delegateQueue:self.operationQueue];
来自Apple文档。到NSURLSession delegateQueue
用于调度委托调用和完成处理程序的操作队列。队列不必是串行队列。如果为nil,则会话创建一个串行操作队列,用于执行所有委托方法调用和完成处理程序调用。
设置self.operationQueue.maxConcurrentOperationCount = 4;
表示会有最大值。 4同时处理NSURLSessionDataTask
?并将其设置为= 1(默认为AFNetworking)意味着当时只有一个任务,它必须完成另一个任务才能开始?
或者我错了,这只影响委托消息传递,这意味着将其设置为4可以触发4个不同线程上的委托回调...并且设置为1意味着回调始终在同一个线程上,但无论如何都要同时处理任务
答案 0 :(得分:4)
该队列是委托队列,因此它应该只影响委托消息传递。
创建NSURLSession
时,为其提供类型为NSURLSessionConfiguration
的配置对象。
NSURLSessionConfiguration
包含一个属性HTTPMaximumConnectionsPerHost
,可让您控制与单个主机的同时连接数。这是我所知道的唯一可以控制连接数的机制。