【发布时间】:2016-10-01 13:37:40
【问题描述】:
我正在使用 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 委托队列
用于调度委托调用和完成处理程序的操作队列。队列不必是串行队列。如果为 nil,则会话创建一个串行操作队列,用于执行所有委托方法调用和完成处理程序调用。
设置self.operationQueue.maxConcurrentOperationCount = 4; 意味着会有最大值。 4同时处理NSURLSessionDataTask?并将其设置为 = 1(AFNetworking 的默认值)意味着当时只有一个任务,并且必须完成才能开始另一个任务?
或者我错了,这只会影响委托消息传递,这意味着将其设置为 4 可以触发 4 个不同线程上的委托回调......而设置为 1 意味着回调始终在同一个线程上, 但无论如何这些任务都是同时处理的
【问题讨论】:
-
上述 Apple 文档的引用中有错字吗?而不是“队列不必是串行队列”,而应该是“队列应该是串行队列”。太明显了,我不敢编辑它,因为害怕我错过了什么。 developer.apple.com/documentation/foundation/nsurlsession/…
标签: ios objective-c multithreading cocoa-touch afnetworking