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

AFNetworking + JSON + 进度下载

很奇怪 - %i 不适用于整数,%d 可以吗?

QuerySelectorAll 不适用于 onclick 事件

<i: Interaction.Behavior> 选项不适用于应用行为

艾克斯 | sed -i 选项不适用于特定的行号