我想在使用 iOS 8.1 SDK 构建时有条件地编译一些代码,并在使用 8.0 SDK 时编译一些不同的代码。在一个以 8.1 SDK 为目标的小项目中(并且可以使用 8.1 的新 API),该#if
指令似乎忽略了常量。
println("__IPHONE_8_1 is defined to be \(__IPHONE_8_1)")
#if __IPHONE_8_1
println("8.1")
#else
println("8.0")
#endif
上面的代码打印:
__IPHONE_8_1 is defined to be 80100
8.0
根据条件编译语句的文档,
可以根据构建配置的评估有条件地编译 Swift 代码。构建配置包括下表中列出的文字
true
和值、命令行标志和平台测试函数。false
您可以使用-D <#flag#>
.
然后它谈论os()
和arch()
功能,但对 SDK 版本一无所知。