成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Swift中的Build Configurations

移動開發 iOS
在swift中,由于對C語言支持沒有Objective-C來得那么友好(暫時不知swift 2到C的支持如何),所以我們無法像在Objective-C中那樣自如而舒坦地使用預處理指令。

Build Configurations in Swift

在Objective-C中,我們經常使用預處理指令來幫助我們根據不同的平臺執行不同的代碼,以讓我們的代碼支持不同的平臺,如:

  1. #if TARGET_OS_IPHONE 
  2.  
  3. #define MAS_VIEW UIView 
  4.  
  5. #elif TARGET_OS_MAC 
  6.  
  7. #define MAS_VIEW NSView 
  8.  
  9. #endif 

在swift中,由于對C語言支持沒有Objective-C來得那么友好(暫時不知swift 2到C的支持如何),所以我們無法像在Objective-C中那樣自如而舒坦地使用預處理指令。

不過,swift也提供了自己的方式來支持條件編譯,即使用build configurations(構建配置)。Build configurations已經包含了字面量true和false,以及兩個平臺測試函數os()和arch()。

其中os()用于測試系統類型,可傳入的參數包含OSX, iOS, watchOS,所以上面的代碼在swift可改成:

  1. #if os(iOS) 
  2. typealias MAS_VIEW = UIView 
  3. #elseif os(OSX) 
  4. typealias MAS_VIEW = NSView 
  5. #endif 

注:在WWDC 2014的“Sharing code between iOS and OS X”一節(session 233)中,Elizabeth Reid將這種方式稱為Shimming

遺憾的是,os()只能檢測系統類型,而無法檢測系統的版本,所以這些工作只能放在運行時去處理。關于如何檢測系統的版本,Mattt Thompson老大在它的Swift System Version Checking一文中給了我們答案。

我們再來看看arch()。arch()用于測試CPU的架構,可傳入的值包括x86_64, arm, arm64, i386。需要注意的是arch(arm)對于ARM 64的設備來說,不會返回true。而arch(i386)在32位的iOS模擬器上編譯時會返回true。

如果我們想自定義一些在調試期間使用的編譯配置選項,則可以使用-D標識來告訴編譯器,具體操作是在”Build Setting”–>“Swift Compiler-Custom Flags”–>“Other Swift Flags”–>“Debug”中添加所需要的配置選項。如我們想添加常用的DEGUB選項,則可以在此加上”-D DEBUG”。這樣我們就可以在代碼中來執行一些debug與release時不同的操作,如

  1. #if DEBUG 
  2. let totalSeconds = totalMinutes 
  3. #else 
  4. let totalSeconds = totalMinutes * 60 
  5. #endif 
  6.  
  7. 一個簡單的條件編譯聲明如下所示: 
  8.  
  9. #if build configuration 
  10. statements 
  11. #else 
  12. statements 
  13. #endif 

當然,statements中可以包含0個或多個有效的swift的statements,其中可以包括表達式、語句、和控制流語句。另外,我們也可以使用&&和||操作符來組合多個build configuration,同時,可以使用!操作符來對build configuration取反,如下所示:

  1. #if build configuration && !build configuration 
  2. statements 
  3. #elseif build configuration 
  4. statements 
  5. #else 
  6. statements 
  7. #endif 

需要注意的是,在swift中,條件編譯語句必須在語法上是有效的,因為即使這些代碼不會被編譯,swift也會對其進行語法檢查。

責任編輯:chenqingxiang 來源: 南峰子的技術博客
相關推薦

2015-01-21 16:25:29

Swift指針

2015-03-16 10:33:14

Swift指針

2015-11-23 10:07:19

Swift模式匹配

2022-05-11 09:01:54

Swift類型系統幻象類型

2022-07-04 08:54:39

Swift處理器項目

2009-03-09 18:39:56

Windows 7新特性

2021-07-07 11:41:38

Swift key paths

2022-05-25 09:15:01

Swift 5.6占位符

2025-03-19 09:02:18

Debouncing任務讓步Swift

2022-06-13 09:02:06

Swift類型占位符

2022-11-21 09:01:00

Swift并發結構

2023-11-03 11:56:34

2015-10-13 10:00:58

Swift隨機數使用總結

2022-04-06 09:10:03

抽象類型普通類型Swift

2010-08-26 16:16:17

DHCP服務器

2021-09-03 08:57:59

Swift強制解析

2025-03-21 09:01:34

Swift任務取消機制協作式取消

2025-01-06 10:24:50

2014-07-04 09:47:24

SwiftSwift開發

2014-08-14 10:12:45

SwiftNil Coalesc
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美精品1区2区3区 免费黄篇 | aaaa日韩 | 一区二区三区精品视频 | 成人av一区二区三区 | 视频在线一区二区 | 一区二区三区播放 | 国产美女久久 | 精品亚洲视频在线 | 日韩精品视频在线观看一区二区三区 | 欧美性久久 | 国产在线小视频 | 亚洲欧美日韩在线不卡 | 精品一区二区三区在线视频 | 久久久久久九九九九九九 | 亚洲精品久久久 | 欧洲一级毛片 | 中文在线a在线 | 久久久久久91 | 日本在线黄色 | 北条麻妃一区二区三区在线视频 | 免费a网站| 91在线视频免费观看 | 国产欧美精品一区二区色综合朱莉 | 91热爆在线观看 | 天天碰日日操 | 久久久不卡网国产精品一区 | 免费黄色片视频 | 毛片毛片毛片毛片毛片 | 色婷婷激情 | 国产黄色大片 | 国产一区二区三区久久久久久久久 | 亚洲成av | 国产精品久久久久久久久久软件 | 嫩草视频在线 | 午夜视频在线 | 性精品 | 亚洲三区在线观看 | 日韩一区中文字幕 | 人人干在线 | 国产精品久久久久久久久久久久久久 | 欧美日韩三级在线观看 |