5

我正在尝试从 ASIHttpRequest 转换为 AFNetworking,但我似乎在我的课程的下一行出现“使用未声明的标识符 AFURLSessionManager”错误。

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

我在标题中包含以下内容:

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

这一定是很明显的事情,但现在脑子里放了一个坏屁。

4

1 回答 1

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 子规范来实现的。为了导入AFNetworkingNSURLSession模块,您只需要执行类似的操作

platform :ios, '7.0'

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

您仍然可以以 iOS 6 为目标,但您不会得到不兼容的子模块,如 CocoaPods 文档中所述。

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

于 2013-09-30T18:47:54.427 回答