【问题标题】:Prevent classes from compiling on specific iOS version防止类在特定 iOS 版本上编译
【发布时间】:2013-10-02 03:46:48
【问题描述】:

我有一个使用 NSURLSession 的课程,但我仍然需要支持 iOS 6。 当我尝试针对 iOS 6 进行编译时,它失败了,因为 NSURLSession 不存在。

如何禁止此类为 iOS 6 编译?

【问题讨论】:

  • 嗯,也许你可以检查当前版本并相应地拆分你的代码......就像这里stackoverflow.com/questions/7848766/…
  • 我可以使用检查#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000,它只能在IOS7上编译,但它不是很漂亮,因为它需要覆盖整个文件
  • Yanchi 的建议适用于您不希望应用程序在设备上运行时由于无法识别的选择器等而崩溃的情况。如果您只想忽略一个文件以便 Xcode 4 允许您编译其余文件,请将其从目标中删除,如下所示:stackoverflow.com/questions/2561715/…
  • 问题针对的是 iOS 6,而不是 XCode 版本。
  • 如果您为 iOS 6 创建第二个目标,并从中删除不兼容的类,您应该能够在为 iOS 6 目标和 iOS 7 目标构建之间进行选择。

标签: ios ios6 nsurlsession


【解决方案1】:

如果您需要同时支持 iOS 7 和 iOS 6.x,那么您的基础 sdk 应该是 iOS7,iOS 部署目标应该是 iOS 6.0。

您应该修改您的类,以便您的应用程序同时支持 iOS 7 和 iOS 6.x

if ([NSURLSession class]) {
    // Use NSURLSession
}
else {
    // Start background task, iOS 6 way
}

【讨论】:

  • 现在大多数人只是将“Base SDK”设置为“iOS 最新”,但其他人都同意。
猜你喜欢
  • 2019-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-04
  • 2015-11-27
  • 2021-09-27
  • 2012-03-31
相关资源
最近更新 更多