在 Swift 中,条件编译语句必须在语法上是有效的,因为即使这些代码不会被编译,Swift 也会对其进行语法检查。
自定义 Flag
OC 中一般使用预编译宏来做条件编译,比如添加一个 DEBUG
预编译宏,然后使用 #ifdefine
或者 #if DEBUG
来判断是否是调试状态
Swift 中没有宏的概念,但是提供了 Active Compilation Conditions ,这个设置可以替代之前预编译宏的方式,来做自己的条件编译
#if <condition>
#elseif <condition>
#else
#endif
常用内置参数
系统相关
Function | Params |
---|---|
os() | OSX, iOS |
arch() | x86_64, arm, arm64, i386 |
// os()只能检测系统类型,而无法检测系统的版本
#if os(OSX)
typealias Color = NSColor
#elseif os(iOS)
typealias Color = UIColor
#endif
语言相关
检查语言版本
#if swift(>=3.2)
// Swift 3.2 及以上
#else
// Swift 3.2 以下
#endif
检查 API 版本
if #available(iOS 9.0, *) {
// iOS 9 及以上
}else{
// iOS 9 以下
}