关闭

Swift1.0的Build Configurations如何使用?

标签: ios开发SwiftObjective-C
133人阅读 评论(0) 收藏 举报


       了解iOS系统的人都知道,iOS开发有两种基础语言,一种是沿用已久的Objective-C,一种是新出的Swift。

       姜还是老的辣,这话还是有一定的道理的,在使用swift1.0对iOS开发中,由于其对C语言支持没有Objective-C来得那么友好,所以无法像在Objective-C中那样自如而舒坦地使用预处理指令。

AD:

BuildConfigurations in Swift

 

        在使用Objective-C进行开发中,我们经常使用预处理指令来帮助我们根据不同的平台执行不同的代码,以让我们的代码支持不同的平台,如:

 

#ifTARGET_OS_IPHONE

 

#define MAS_VIEWUIView

 

#elifTARGET_OS_MAC

 

#define MAS_VIEWNSView

 

#endif

 

 

         在使用swift语言进行开发中,则使用的是build configurations(构建配置)来支持条件编译。Build configurations已经包含了字面量true和false,以及两个平台测试函数os()和arch()。

 

         其中os()用于测试系统类型,可传入的参数包含OSX, iOS, watchOS,所以上面的代码在swift可改成:

 

#if os(iOS)

typealiasMAS_VIEW = UIView

#elseif os(OSX)

typealiasMAS_VIEW = NSView

www.maiziedu.com

#endif

 

       但os()只能检测系统类型,而无法检测系统的版本,所以这些工作只能放在运行时去处理。

而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开发ios系统时,条件编译语句必须在语法上是有效的,因为即使这些代码不会被编译,swift也会对其进行语法检查。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:35177次
    • 积分:536
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:80篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论