ios – AFHTTPRequestOperationManager是否在operationQueue上运行请求?

ios – AFHTTPRequestOperationManager是否在operationQueue上运行请求?,第1张

概述如果我有一个经理创建和实例变量,我做: AFHTTPRequestOperation *operation = [self.manager HTTPRequestOperationWithRequest:request success:mySuccessBlock failure:myFailureBlock];[operation start]; 这会在经理的operationQueue上运 如果我有一个经理创建和实例变量,我做:

AFhttpRequestoperation *operation = [self.manager httpRequestoperationWithRequest:request success:mySuccessBlock failure:myFailureBlock];[operation start];

这会在经理的operationQueue上运行吗?我似乎无法找到任何保证它将使用GET,POST,PUT方法之一,而我假设将把 *** 作添加到队列.

我在这里看到了mattt的答案,但我想确定这种或那种方式.

How send request with AFNetworking 2 in strict sequential order?

我要做的是排队请求并让它们通过设置同步运行

[self.manager.operationQueue setMaxConcurrentoperationCount:1];
解决方法 如果要对队列运行 *** 作,则必须将 *** 作显式添加到队列:

AFhttpRequestoperation *operation = [self.manager httpRequestoperationWithRequest:request success:mySuccessBlock failure:myFailureBlock];[queue addOperation:operation];

这假设你要创建一个队列:

NSOperationQueue *queue = [[NSOperationQueue alloc] init];queue.name = @"com.domain.app.networkQueue";queue.maxConcurrentoperationCount = 1;

如果你只是在没有将它们添加到队列的情况下启动 *** 作(例如[ *** 作开始]),它们就会运行,而不会遵循任何特定的队列参数.

注意,您也可以将 *** 作添加到 *** 作管理器的队列中(您可以设置maxConcurrentoperationCount,正如您在问题中提到的那样):

[self.manager.operationQueue addOperation:operation];

这使您无需创建自己的队列.但它假设您对该经理的所有其他AFNetworking请求也将连续运行.就个人而言,我将单独留下manager.operationQueue,并为我需要串行 *** 作的逻辑创建一个专用队列.

最后一点:使用串行网络 *** 作会对并发请求造成严重的性能损失.我会从你的问题中假设你绝对需要按顺序进行,但总的来说我现在设计我的应用程序以尽可能使用并发请求,因为它是一个更好的用户体验.如果我需要一个特定的 *** 作是串行的(例如登录),那么我用 *** 作依赖或完成块来做,但应用程序的其余部分尽可能运行并发网络请求.

总结

以上是内存溢出为你收集整理的ios – AFHTTPRequestOperationManager是否在operationQueue上运行请求?全部内容,希望文章能够帮你解决ios – AFHTTPRequestOperationManager是否在operationQueue上运行请求?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1076873.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存