我正在使用AFNetworking 3.0,它使用NSURLSessionDataTask
,并且还有一个操作队列(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];
从苹果文档中,到 NSURLSession delegateQueue:
一个操作队列,用于安排委托调用和完成处理程序。队列不必是串行队列。如果为nil,则会话将创建一个串行操作队列,用于执行所有委托方法调用和完成处理程序调用。
设置 self.operationQueue.maxConcurrentOperationCount = 4 ,这意味着最多有4个同时处理的 NSURLSessionDataTask 吗?而将其设置为1(AFNetworking 的默认值)意味着同一时间只有一个任务,并且必须完成另一个任务后才能开始下一个吗?
或者我错了,这只影响委托消息传递,这意味着将其设置为4可以在4个不同的线程上触发委托回调...而将其设置为1表示回调始终在同一线程上,但是任务仍然被并发处理。