sha*_*ioz 15 network-programming ios afnetworking afnetworking-2 nsurlsession
所以我知道在旧的AFNetworking中使用AFHTTPClient是可能的,我知道如果我使用AFHTTPRequestOperationManager我可以设置队列的限制,但我不能让AFHTTPSessionManager一次只运行x个请求而不是我自己实现它使用成功块(我不想).
以下代码不限制我的连接:
AFHTTPSessionManager*manager = [AFHTTPSessionManager manager]; manager.operationQueue.maxConcurrentOperationCount = 1;
根据这里有趣的讨论,我向服务器提出了很多请求,并且在我获得超时之前将其阻塞,因此我确实需要限制并发连接.
我错过了什么?
Aar*_*ger 22
AFHTTPSessionManager使用任务而不是操作(NSURLSessionDataTask特别是),这就是您无法设置操作队列的原因.
正如您在此类的实现中所看到的,任务立即启动([task resume])而不会添加到任何类型的队列中.
因此,遗憾的是,没有内置的AFNetworking方法来设置使用的并发任务数量的限制AFHTTPSessionManager.
可能的选择:
AFHTTPRequestOperationManager替代(这是我在做什么)NSOperation以任务作为属性的子类,并在[operation start]子类的方法中启动任务如果您的请求都是同一主机,请直接访问HTTPMaximumConnectionsPerHost基础URL加载系统中的选项,如下所示:
[NSURLSessionConfiguration defaultSessionConfiguration].HTTPMaximumConnectionsPerHost = 4;
Run Code Online (Sandbox Code Playgroud)
这种方法有许多注意事项,Apple文档中对此进行了讨论.
如果您最终做#2,请将其作为拉动请求提交给AFNetworking - 这将是一个受欢迎的补充.
| 归档时间: |
|
| 查看次数: |
6331 次 |
| 最近记录: |