Swift的build configurations是如何支持条件编译的?
2015-07-16 14:23
363 查看
在iOS开发中,大家习惯了用Objective-C,也清楚的知道其在各种不同情况下的编写方法,但对于近两年新出的swift语言的操作却略显生疏。
就拿“让代码支持不同平台怎么实现”的案例来说,在Objective-C语言中,我们可能直接使用预处理指令就可实现,而在swift中却无法直接使用预处理命令,达到目的。不过作为一种完善的编程语言,swift也提供了自己的方式来支持条件编译,就是使用使用build configurations(构建配置)。
Build configurations包含了字面量true和false,以及两个平台测试函数os()和arch()。其中os()用于测试系统类型,可传入的参数包含OSX,iOS, watchOS。
但美中不足的是,os()只能检测系统类型,而无法检测系统的版本,所以这些工作只能放在运行时去处理。
而swift的另一个函数arch(),主要用于测试CPU的架构,可传入的值包括x86_64,arm, arm64, i386。需要注意的是arch(arm)对于ARM 64的设备来说,不会返回true。而arch(i386)在32位的iOS模拟器上编译时会返回true。
如果想自定义一些在调试期间使用的编译配置选项,则可以使用-D标识来告诉编译器,具体操作是在”BuildSetting”–>“Swift Compiler-Custom Flags”–>“Other Swift Flags”–>“Debug”中添加所需要的配置选项。如我们想添加常用的DEGUB选项,则可以在此加上”-D DEBUG”。这样我们就可以在代码中来执行一些debug与release时不同的操作,如
#if DEBUG
let totalSeconds = totalMinutes
#else
let totalSeconds = totalMinutes * 60
#endif
一个简单的条件编译声明如下所示:
#if buildconfiguration
statements
#else
statements
#endif
当然,statements中可以包含0个或多个有效的swift的statements,其中可以包括表达式、语句、和控制流语句。另外,我们也可以使用&&和||操作符来组合多个build configuration,同时,可以使用!操作符来对buildconfiguration取反,如下所示:
#if buildconfiguration && !build configuration
statements
#elseif buildconfiguration
statements
#else
statements
#endif
需要注意的是,在swift中,条件编译语句必须在语法上是有效的,因为即使这些代码不会被编译,swift也会对其进行语法检查。
以上就是Swift中使用构建配置来支持条件编译的一些基本操作,可能还有些复杂,期待Swift2能更简化,同时也希望本文对新手swift开发人员有所帮助。
参考:南峰子的技术博客
相关文章推荐
- Apple Swift学习教程
- iOS开发之路--微博“更多”页面
- Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
- Swift中定义二维数组的方法及遍历方法示例
- Objective-C的内省(Introspection)用法小结
- 简单分析Swift语言的一些基本特征
- Swift与C语言指针结合使用实例
- Swift心得笔记之控制流
- 用Swift构建一个简单的iOS邮件应用的方法
- 苹果公司推出的新编程语言Swift简介和入门教程
- Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析
- iOS开发之路--微博骨架搭建
- IOS开发代码分享之获取启动画面图片的string
- Objective-C中NSLog输出格式大全
- Swift中的指针操作和使用详细介绍
- Swift中使用正则表达式的一些方法
- Swift心得笔记之运算符
- Swift中使用可选类型完美解决占位问题
- Swift学习笔记之构造器重载