AFNetworking 2.0.3 不适用于 iOS 6
Posted
技术标签:
【中文标题】AFNetworking 2.0.3 不适用于 iOS 6【英文标题】:AFNetworking 2.0.3 not working on iOS 6 【发布时间】:2013-12-25 12:51:50 【问题描述】:我通过 CocoaPods 安装了 AFNetworking:
pod "AFNetworking", '~> 2.0.3'
所以,从标准 GET 请求调用的方法:
- (NSURLSessionDataTask *)GET:(NSString *)URLString
parameters:(NSDictionary *)parameters
success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure
在 ios 6 上调用 - (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request;
返回 nil
。
因为 AFNetworking 使用了 iOS 7.0 中引入的NSURLSessionTask
& NSURLSession
来自AFNetworking Documentation:
新要求:iOS 6、Mac OS X 10.8 和 Xcode 5
AFNetworking 2.0 正式支持 iOS 6+、Mac OS X 10.8+ 和 Xcode 5。
为什么它调用方法,只出现在 iOS7 中?
【问题讨论】:
【参考方案1】:我找到了解决办法:
我的 API 客户端继承自 AFHTTPSessionManager
(如在 afnetworking 站点示例中)。
但如果您使用的是 iOS 6,则只需保留从 AFHTTPRequestOperationManager
的继承,就像在 AFNetworking 1.x 版本中一样。
替换:
@interface APIClient : AFHTTPSessionManager
到:
@interface APIClient : AFHTTPRequestOperationManager
【讨论】:
这样做需要两种调用方式,例如GET:parameters:success:failure 方法,因为成功和失败块在 AFHTTPSessionManager 和 AFHTTPRequestOperationManager 中是不同的。相反,只需扩展 AFHTTPRequestOperationManager(只要您的应用支持 iOS6)以上是关于AFNetworking 2.0.3 不适用于 iOS 6的主要内容,如果未能解决你的问题,请参考以下文章
AFNetworking 2.0 setImageWithURLRequest
QuerySelectorAll 不适用于 onclick 事件