【问题标题】:Does AFNetworking 2.0 support iOS 6.0?AFNetworking 2.0 是否支持 iOS 6.0?
【发布时间】:2013-10-03 05:01:26
【问题描述】:

AFNetworking 2.0 于上周发布。但我发现 AFNetworking 2.0 有不同的要求。

README.md 表示它需要 iOS 7.0 及以上版本,而AFNetworking 2.0 Migration Guide 表示它需要 iOS 6.0 及以上版本。

AFNetworking 2.0 支持 iOS 6.0 吗?

【问题讨论】:

  • 无论哪种方式,您都应该提交有关此问题的错误报告。
  • +1 取消反对票。这令人困惑,因为文档和其他地方彼此不一致。

标签: ios afnetworking afnetworking-2


【解决方案1】:

根据the CocoaPods podspec,可以简单使用AFN 2.0,但不包含NSURLSession相关文件。

例如,如果您使用 CocoaPods(如果您不使用,您真的应该考虑这样做,这太棒了!),只需在您的 Podfile 上使用它即可获得不带 NSURLSession 相关功能的 AFN 2.0:

pod 'AFNetworking', '~> 2.0'

这只会得到"Core"子规范,它支持iOS的部署目标6.0(podspec中的s.ios.deployment_target = '6.0')并且不集成NSURLSession相关文件。因此,这将与您使用 iOS6 或更高版本部署目标的项目兼容。


如果您以后希望放弃对项目的 6.0 支持并利用 NSURLSession 功能,可以将 NSURLSession 子规范添加到您的 Podfile

pod 'AFNetworking', '~> 2.0' # Core, without NSURLSession, compatible with iOS6
pod 'AFNetworking/NSURLSession', '~> 2.0' # Add NSURLSession features, only compatible with iOS7

您可以在podspec 中看到,添加NSURLSession 子规范将添加s.ios.deployment_target = '7.0' 要求,因此当然也要求您的项目的部署目标为7.0 或更高版本,正如您所料。


[编辑] 自从我回答之后,Mattt 更新了它的代码和 podspec,这样即使针对 iOS6,您也可以获得NSURLSession 子规范。请参阅this pull request on its github(和其他相关的)。 所以现在你可以得到NSURLSession子规范,即使是你的iOS6-min项目,只要在运行时有条件地调用它们,只有if ([NSURLSession class])是真的。

【讨论】:

  • 太棒了!这就是我想要的!我确实使用过 CocoaPods(一个 CocoaPods 新手),但我不确定我的 iOS 6 项目可以使用哪个 AFNetworking 版本。
  • 使用2.0,但不要使用NSURLSession 子规范,只使用默认的子规范(如我的回答中所述)。
  • 这是我试过的,但是在CocoaPods中找不到~> 2.0版本。所以我改用2.0.0RC3,但这包括没有AFNetworking/NSURLSession子规范的NSURLSession
  • 如果您在将 AFN 与 CocoaPods 一起使用时遇到问题,最好在 mattt 的 GitHub 存储库上提交问题,这将是一个比 SO 更适合提出此类问题的地方。
  • 很遗憾我们不能在兼容ios6的项目中使用AFNetworking和AFNetworking/NSURLSession,并根据ios版本决定是否调用新类……
【解决方案2】:

iOS 6 支持 AFNetworking 2.0。我的问题是我之前安装的平台设置为 iOS 7。我通过这样做修复了它:

  1. 从我的Podfile 中删除了所有内容
  2. Ran pod install,它删除了我所有的 pod。
  3. 将所有内容添加回我的Podfileplatform :ios, '6.0'

而且我仍然可以毫无问题地使用现有的 AFNetworking 代码。

【讨论】:

    【解决方案3】:

    是的,它确实支持 iOS6,但 NSURLSessionTask 部分除外,它们仅适用于 iOS7。

    我也很困惑,但在从 1.x -> 2.0 过渡期间,似乎并非所有文档都已更新。他们现在已经有了,并且在我支持 iOS6 的项目中运行良好。

    【讨论】:

      【解决方案4】:

      您可以使用 AFNetworking 2.0。只需确保在使用可可豆荚安装时将部署目标设置为 6.0。我最初在部署目标为 7.0 时安装了 AFNetworking。因此必须将其从可可豆荚设置部署目标中删除到 6.0,然后重新安装。

      【讨论】:

        【解决方案5】:

        我根本没有使用 pod。相反,我下载了它并将文件拖到项目中,然后也遇到了这个问题。为了修复它,我只是从项目中删除了AFURLSessionManagerAFHTTPSessionManager 文件。然后就成功了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-31
          • 2016-11-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多