Swift 4 0 巨集定義

2021-08-18 20:33:59 字數 2041 閱讀 5551

swift中並沒有加入巨集系統,c語言使用#define定義的基本常量在匯入swift時被swift編譯自動轉為swfit語言的全域性變數。但複雜的巨集定義不能被swift轉換。swift中類似巨集定義,可以單獨建立乙個類,如const.swift,在此類中宣告一些常量。

例如:

// 螢幕的寬

let screen_width = uiscreen.main.bounds.size.width

// 螢幕的高

let screen_height = uiscreen.main.bounds.size.height

//判斷iphone4

let iphone4_dev:bool! = (uiscreen.main.bounds.size.height == 480) ? true : false

//判斷iphone5/

5c/5s

let iphone5_dev

:bool! = (uiscreen.main.bounds.size.height == 568) ? true

:false

//判斷iphone6/

6slet iphone6s_dev

:bool! = (uiscreen.main.bounds.size.height == 667) ? true

:false

//判斷iphone6p

let iphone6p_dev:bool! = (uiscreen.main.bounds.size.height > 667) ? true : false

//判斷ipad

let ipad_dev:bool! = (uidevice.current.userinte***ceidiom == .pad) ? true : false

當然,swift也支援條件編譯

#if iphone4_dev

//iphone4設定編譯此處

#elseif iphone5_dev

//iphone5/

5c/5s設定編譯此處

#elseif iphone6_dev

//iphone6/

6s設定編譯此處

#elseif iphone6p_dev

//iphone6p設定編譯此處

#elseif ipad_dev

//ipad設定編譯此處

#else

//其他設定編譯此處

#endif

對於複雜一點的,僅僅使用常量定義是難以實現的,需要定義巨集方法來達到目的。

例如:

/// 重置透明度的隨即色

////// - parameter r

: red

/// - parameter g

: green

/// - parameter b

: black

/// - parameter a

: alpha (0~1之間)

///func xyqrandomcoloralpha(r

:cgfloat,g

:cgfloat,b

:cgfloat,a

:cgfloat) -> uicolor

/// 預設透明度的隨即色

////// - parameter r

: red

/// - parameter g

: green

/// - parameter b

: black

///func xyqrandomcolor(r

:cgfloat,g

:cgfloat,b

:cgfloat) -> uicolor

注意:建立的巨集檔案,也即const.swift檔案的路徑設定和oc是一樣的,都需要在buildsetting中prefix header處設定。

Swift4 0 基礎部分

翻譯能力有限,如有不對的地方,還請見諒!希望對swift的學習者有所幫助 swift是一門新的程式語言,用於ios,macos,watchos以及tvos系統平台上應用程式的開發。儘管如此,如果有c和objective c開發經驗的話,那麼對於swift的許多部分,你將並不陌生。c和objectiv...

Swift 4 0 陣列 Array 學習

定義陣列常量 常量只有讀操作 let array1 int 11,55,5 let array2 11,55,5 定義陣列變數var array int 這是我最喜歡的 var array0 int 10,20,30 初始化並賦值 var array1 int array var array2 ar...

Swift 4 0 高階 自定義操作符

注意 在swift初期 1.0,2.0 和 這些前 後 置運算子還是可以使用的,但是會有警告 但在swift4.0已經不能使用了 編譯無法通過 不過我們自己定義的前 後 置運算子是可以使用的。1.中置運算子 示例 定義優先順序組 precedencegroup myprecedence infix ...