在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()
的引數需要說明的是,arm
和arm64
兩項分別對應32位cpu 和64位cpu的真機情況,而對於模擬器,相應的32位裝置的模擬器和64位裝置的模擬器所對應的分別是i386
和x86_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定義的符號 由預...