【问题标题】:How do I check the iOS target version in Objective-C如何在 Objective-C 中检查 iOS 目标版本
【发布时间】:2019-05-06 00:21:36
【问题描述】:

我目前正在开发一个针对 iOS 9 的 iOS 应用。由于这个目标版本的年代久远,我必须使用旧 API,有时还必须为旧版本中的错误添加解决方法。

我想让我的代码更易于维护,并抢先标记目标版本更改后需要重构的部分。现在我正在使用 TODO cmets,但#warning 指令会更好,因为它们更容易看到。

有没有办法使用#if#ifdef 指令来检查应用程序的iOS 目标版本,以便只有在目标版本更改时才会出现警告?

【问题讨论】:

  • 如果我理解正确,您必须阅读this,它在前一段时间对我有所帮助。您可以定义一个模式并构建一个逻辑,具体取决于所选的一个。
  • @ChooGoo 你提到的链接很有趣,但我已经为不同目标的内部测试设置了类似的东西。不幸的是,它没有说明检查目标版本。
  • 对不起,我误会了。也许你想使用'if #available(iOS 10.0, *) {}'?

标签: objective-c conditional-compilation


【解决方案1】:

您可以检查__IPHONE_OS_VERSION_MIN_REQUIRED 预处理器宏的值:

#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 100000
#endif

文字 100000 是来自 <Availability.h>__IPHONE_10_0 的值,但是,正如那里的评论所建议的那样,您应该使用文字值,而不是符号常量。

【讨论】:

  • 谢谢,但我认为使用__IPHONE_x_y 宏对我来说是安全的:由于App Store 需要一个绝对具有宏的最低Xcode/SDK 版本,它使我的代码更可读。
猜你喜欢
  • 2017-10-13
  • 2011-09-07
  • 1970-01-01
  • 2020-03-29
  • 1970-01-01
  • 2014-10-29
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多