Swift 條件編譯

2021-10-25 21:28:27 字數 1516 閱讀 8905

c 語言中,可以使用#if或者#ifdef之類的編譯條件分支來控制哪些**需要編譯,哪些**不需要。swift沒有巨集定義的概念,因此我們不能使用#ifdef的方法來檢查某個符號是否經過了定義。但是為了控制編譯流程和內容,swift 還是為我們提供了幾種簡單的機制來根據需求定製的編譯內容的。

首先#if這一套編譯標記還是存在的,使用的語法也和原來沒有區別:

#if

#elseif

#else

#endif

當然,#elseif#else是可選的。

但是這幾個表示式裡的condition 並不是任意的。swift 內建了幾種平台和架構的組合,來幫助我們為不同的平台編譯不同的**,具體如下:

方法可選引數

os()

osx/macos, ios

arch()

x86_64, arm, arm64, i386

注意這些方法和引數都是大小寫敏感的。舉個例子,如果我們統一在ios平台和mac平台的關於顏色的api 的話,一種可能的方法就是配合typealias進行條件編譯:

#ifos(

osx)

typealias

color

=nscolor

#else

typealias

color

=uicolor

#endif

另外對於arch()的引數需要說明的是,armarm64兩項分別對應32位cpu 和64位cpu的真機情況,而對於模擬器,相應的32位裝置的模擬器和64位裝置的模擬器所對應的分別是i386x86_64,它們也是需要分開對待的。

@ibaction

func

buttonaction

(_ sender:

any)

在這裡我們用free_version這個編譯符號來代表免費版本。為了使之有效,我們需要在專案的編譯選項中進行設定,在專案的build settings中,找到swift compiler - custom flags,並在其中的other swift flags中加上-d free_version加上這個標記,自定義的編譯符號即為true否則為false

Swift 條件語句

條件語句通過設定的乙個或多個條件來執行程式,在條件為真時執行指定的語句,在條件為 false 時執行另外指定的語句。主要包括如下幾種型別的條件語句 if 語句 由乙個布林表示式和乙個或多個執行語句組成。var vara int 10 檢測條件 if vara 20 print vara 變數的值為 ...

條件編譯 if

1 為什麼需要條件編譯 客戶的需求在不停地發生變化,一會兒需要這個功能,一會兒不需要這個功能。我們可以使用條件編譯來方便地裁剪功能。2 條件編譯語句 if 條件編譯語句 if的形式是 1 if expression 2.3 elif expression 4.5 elif expression 6....

if 條件編譯

1.格式 if constant expressionstatements elif constant expressionstatements else statements endif 其中 constant expression 常量表示式 字面值常量,或者乙個有 define定義的符號 由預...