【发布时间】:2013-11-05 13:20:17
【问题描述】:
只有当 Base SDK 为 7.0 或更高版本时,是否有任何预处理器宏来编译某些代码部分? “__IPHONE_7_0”定义的常量似乎与 iOS 开发目标相关联(而不是与基础 SDK)。
我正在使用安装了 iOS 7 和 iOS 6.1 的 XCode 5。
我问这个的原因是我目前正在将应用程序从 iOS 6 转换到 iOS 7。有很多事情需要调整,我目前仍然想以 iOS 6.1 为基础编译我的应用程序SDK(以及开发目标 iOS 6.0),但已经想添加一些我在使用 iOS 7 SDK 编译时需要的代码,但如果基础 SDK 是 iOS 6.1,则无法编译。
例子:
if ([_tableView respondsToSelector:@selector(setSeparatorInset:)]) {
[_tableView setSeparatorInset:UIEdgeInsetsZero];
}
上面的这段代码不能用 iOS 6.1 基础 SDK 编译,因为它抱怨 setSeparatorInset 没有为 UITableView 定义。因此,我想将这段代码包含在预处理器指令中,有条件地基于基础 SDK。
【问题讨论】:
-
在迁移到 iOS 7 SDK 时,为什么还要使用 iOS 6 SDK 编译应用程序?
-
因为有很多我需要解决的问题我还没有完成(一些 UI 工件在新的 iOS7 SDK 中看起来很奇怪)但我现在需要编译一个快速版本来解决一个紧急的错误。