文章目录
一、OC使用条件编译
OC中可以使用宏定义,再使用条件编译
#define USER_CUSTOM
使用
#if USER_CUSTOM
//其他代码
#endif
二、Swift使用条件编译
Swift 不像ObjectC一样,通过定义一个变量,然后使用**#if #endif** 方法。swift需要设置一下才能使用。
- 点击项目targets,点击build setting,搜索** Swift Compiler - Custom Flags设置, Active Compilation Conditions**
- Debug和Release 可以设置不同的值
- 设置好后就可以使用了
func test() {
#if CUSTOM
print("custom")
#endif
}
三、swift中常用的条件编译
1. 判断系统
使用方法: os(Platform)
PlatForm参数可选值为:macOS , iOS ,watchOS,tvOS,Linux,Windows
2. 判断系统架构
使用方法:arch(Arch)
Arch 参数可选值为:i386, x86_64, arm, arm64。
3. 判断swift版本
使用方法:swift(version)
version 参数的值为对某个 swift 版本的大小判断,可以使用 >= 或 <,后跟版本号。比如:
#if swift(>=5)
// 大于等于 swift 5.0 的版本
#endif
#if swift(>=4.2)
// 大于等于 swift 4.2 的版本
#endif
4. 判断编译器版本
使用方法:compiler(version)
version 参数的值为对某个编译器版本的大小判断,可以使用 >= 或 < 后跟版本号。比如:
#if compiler(>=5)
// 使用 Swift 5 或更高版本编译
#endif
5. 判断是否可以导入某个模块
使用方法:canImport(module)
module 参数的值为某个模块名称。比如我要判断是否当前环境是否可以使用 Kingfisher 模块:
#if canImport(Kingfisher)
// 可以使用 Kingfisher 模块
#endif
6. 判断目标环境
使用方法:targetEnvironment(env)
env 参数可以选用的值为有 simulator | macCatalyst,比如我要判断当前运行环境是否为模拟器:
#if targetEnvironment(simulator)
// 当前运行在模拟器上
#endif