AFNetworking Singleton的并发性

ale*_*ipp 2 objective-c ios afnetworking

我已经将AFHTTPSessionManager子类化,并添加了一些特定于我的实现的方法.关于使用我的子类作为单例和并发,我有几个问题:

  • 创建AFHTTPSessionManager的单例仍然是最佳实践吗?(AFNetworking 2.0,iOS7)

  • 如果我使用[self GET/POST方法通过子类的单例进行请求,这是否支持并发操作?例如,我有一个慢同步运行,然后进行搜索.搜索会立即开始还是等待同步完成?或者,问另一种方式,这些操作是在独立的操作队列上吗?

Rob*_*Rob 6

您询问:

创建一个AFHTTPSessionManager仍然是最佳实践的单身人士?(AFNetworking 2.0,iOS7)

我不确定这是不是最好的做法.单身人士经常被嘲笑(看看单身人士什么问题?这与许多反对单身人士的争论有关).它们很方便,但对于大多数应用程序来说,会话​​管理器的单例是不必要的.我的总法律顾问是,除非你有一些迫切的需要,否则你不应该使用单身人士.

这是一个意见和辩论的主题(在Stack Overflow上明显不赞成),所以我不建议我们进一步追求这个问题.按照上面Stack Overflow问题中的链接,你会看到很多意见.

如果我发出请求......这是否支持并发操作?

是的,网络请求以异步方式运行并支持并发操作.

这些操作是否在独立的操作队列中?

在我写这篇文章时,生成的请求AFHTTPSessionManager根本不在操作队列上运行.会话的经理NSURLSession自己管理任务.

另一方面,NSURLConnection基于-based AFHTTPRequestOperationManager将在单个并发操作队列上运行GETPOST请求.如果您手动创建自己的AFHTTPRequestOperation,可以根据需要将它们添加到自己的队列中.

但所有这些都是学术性的.我认为你真正的问题是GETPOST请求是否异步运行,答案是肯定的.如果问题是它们是否相互同时运行,那么答案就是"是".

  • 太好了谢谢.这解释了downvotes.在这种特定情况下,作者在文档中推荐单例模式:http://cocoadocs.org/docsets/AFNetworking/2.0.0/Classes/AFHTTPSessionManager.html (2认同)