由于AFNetworking 2.0
AFHTTPClient
已经消失,有利于两位经理:AFHTTPRequestOperationManager
和AFHTTPSessionManager
。迁移指南几乎没有说明每种情况下最好使用的情况。据我所知,与RESTful JSON API
的基本交互可以分别使用它们来实现。
使用RequestOperationManager
或SessionManager
的最合适的案例是什么?
答案 0 :(得分:18)
它们基本相同,只是AFHTTPSessionManager
在内部使用iOS 7 / OS X 10.9 NSURLSession
,因此它不能在iOS 6中使用。AFHTTPRequestOperationManager
直到NSURLRequest
已被弃用。
所以回顾一下:为了支持新的NSURLSession API以及旧的但尚未弃用且仍然有用的NSURLConnection,AFNetworking 2.0的核心组件在请求操作和会话任务之间分开。 AFHTTPRequestOperationManager和AFHTTPSessionManager提供类似的功能,几乎可互换的接口可以在需要时轻松换出(例如在iOS 6和7之间移植)。
请注意,两者之间存在一些差异。 AFHTTPSessionManager返回NSURLSessionDataTask对象,这些对象不是NSOperations。这意味着将它们排队并在请求之间建立依赖关系变得更加困难。
答案 1 :(得分:1)
另见AFHTTPRequestOperationManager
的子类注释鼓励使用广泛处理Web服务的iOS 7或Mac OS X 10.9或更高版本的开发人员继承AFHTTPSessionManager,提供一种返回共享单例对象的类方法,在该对象上可以跨应用程序共享身份验证和其他配置。
对于面向iOS 6或Mac OS X 10.8或更早版本的开发人员,AFHTTPRequestOperationManager可能会用于类似的效果。