Swift中没有宏,但可以用其他方式实现类似于宏的功能。
示例:
#define M_PI 3.14
let M_PI = 3.14
#define NSLocalizedString(key, comment) \
[[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
func NSLocalizedString(key: String, value: String, table: String) -> String {
return Bundle.main.localizedString(forKey: key, value: value, table: table)
}
Swift中也没有了条件编绎
#if <condition>
#elseif <condition>
#else
#endif
不过,Swift 内建了几种平台和架构的组合,来帮助我们为不同的平台编译不同的代码,具体地:
方法 | 可选参数 |
---|---|
os() | OSX, iOS |
arch() | x86_64, arm, arm64, i386 |
os即操作系统,OSX即MAC操作系统,iOS即手机, iPad..操作系统
arch指CPU架构,arm 和 arm64 两项分别对应真机 32 位 CPU 和 64 位 CPU, i386 和 x86_64两项分别对应32位模拟和64位模拟器(模拟器当然使用的是电脑x86系列CPU)
如果我们统一我们在 iOS 平台和 Mac 平台的关于颜色的 API 的话,一种可能的方法就是配合 typealias 进行条件编译:
#if os(OSX)
typealias Color = NSColor
#else
typealias Color = UIColor
#endif
参考:
网友评论