AFNetworking包括标题

时间:2013-09-30 17:59:40

标签: objective-c afnetworking-2

我正在尝试从ASIHttpRequest转换为AFNetworking但我似乎在我班上的以下行中使用了“未声明的标识符AFURLSessionManager”错误。

AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];

我在标题中加入了以下内容:

#import "AFNetworking.h"
#import "AFURLSessionManager.h"

它必须是非常明显的东西,但现在脑屁很难。

1 个答案:

答案 0 :(得分:5)

AFURLSessionManager.h

中的这行代码简单解释了这种行为
#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000) || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090)

AFURLSessionManager使用NSURLSession,可从iOS 7(和OSX 10.9)上获取。

如果您的目标是iOS 6,则AFURLSessionManager无法使用,并且在编译时被删除。这就是你得到错误的原因。

将iOS 7设置为最低部署目标将修复编译错误,即使它可能不符合您的需求。


尽管如此,我的建议是使用CocoaPods来管理第三方依赖项,例如AFNetworking

AFNetworking 2.0是一个模块化框架,这意味着您可以根据需要选择要使用的模块。核心支持iOS 6,但有些模块仅支持iOS 7,例如NSURLSession模块,AFURLSessionManager所属的模块。

使用CocoaPods subspecs实现模块化。要导入AFNetworkingNSURLSession模块,您只需执行类似

的操作
platform :ios, '7.0'

pod 'AFNetworking',              '~> 2.0'
pod 'AFNetworking/NSURLSession', '~> 2.0'

你仍然可以定位iOS 6,但你不会得到不兼容的子模块,如CocoaPods文档中所指定的那样。

  

子规范可以限制父规范的平台。在这种情况下,只有当podfile的目标支持它时,它才会被父规范继承。