【发布时间】:2013-10-18 07:13:44
【问题描述】:
我有一个使用 iOS 6.1 编译的 iOS 静态库。我想做的是在编译时运行检查以查看链接到我的静态库的 iOS 应用程序是否使用 iOS7 编译(并在该事件中运行一些代码)。有没有办法做到这一点?我试过了:
- __IPHONE_OS_VERSION_MAX_ALLOWED 宏,但它返回我的库 (60100) 的已编译操作系统版本,而不是链接到它的应用程序。
- 检查 NSFoundationVersionNumber 但返回的是设备的系统版本,而不是应用程序。
非常感谢任何帮助。谢谢!
编辑:根据请求,这里有更多关于我想要完成的信息。
我的 iOS6 编译静态库提供全屏广告。随着 iOS7 对状态栏显示方式的更改,我的广告(带有 UIWebViews 的 UIViews)出现在状态栏元素下方。所以,我试图检测使用我的静态库的应用程序是否是用 iOS7 编译的,所以我可以做一些事情,比如向下调整上述 UIWebView 的原点,在我的顶部添加一个 20 点灰色 UIView 对象主 UIView 对象,因此状态栏元素可见等。此外,检查应用程序是否针对 iOS6 编译同样重要,因此我不会错误地应用 UI 修复。检查 UIDevice 的 systemVersion 属性将不起作用,因为无论使用我的库的应用程序是在 iOS6 还是 iOS7 上编译的,它都会返回相同的内容。
【问题讨论】:
-
所以你问苹果是如何完成的:“作为一种向后兼容机制,苹果框架有时会检查构建应用程序的 SDK 版本,如果是较旧的 SDK,则修改兼容性的行为。这是在 Apple 预测或发现兼容性问题的情况下完成的。 developer.apple.com/library/ios/documentation/DeveloperTools/…
标签: c++ iphone ios objective-c ios7