Swift 巨集定義
swift中沒有了#Define這種巨集定義了,可以用兩種途徑來代替之前的Define處理的情況,分別是
- 可以用let來宣告常量,來取代常量巨集定義
- 可以用全域性func來替代複雜表示式的巨集定義
- < let常量定義>判斷當前系統版本
let IS_IOS7 = (UIDevice.currentDevice().systemVersion as NSString).doubleValue >= 7.0
let IS_IOS8 = (UIDevice.currentDevice().systemVersion as NSString).doubleValue >= 8.0
這種用let替代#define只適用於一般的常量巨集,如果是表示式或者其他複雜的巨集,let也無能無力
2.<複雜表示式巨集定義>使用全域性func函式
func IS_IOS7() ->Bool {
return (UIDevice.currentDevice().systemVersion as NSString).doubleValue >= 7.0 }
func IS_IOS8() -> Bool {
return (UIDevice.currentDevice().systemVersion as NSString).doubleValue >= 8.0 }
這樣,就可以在三元表示式中使用了:
navBar = UIView(frame: CGRectMake(0, 0, 320, IS_IOS7() ? 64:44))
還有RGBA巨集
RGBA(r, g, b, a) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:(a)]
可以寫成這樣:
func RGBA (r:CGFloat, g:CGFloat, b:CGFloat, a:CGFloat) { return UIColor (red: r/255.0, green: g/255.0, blue: b/255.0 , alpha: a) }
var theColor : UIColor = RGBA (255, 255, 0, 1)
相關推薦
Swift 巨集定義
swift中沒有了#Define這種巨集定義了,可以用兩種途徑來代替之前的Define處理的情況,分別是 可以用let來宣告常量,來取代常量巨集定義 可以用全域性func來替代複雜表示式的巨集定義 < let常量定義>判斷當前系統版本
OC&swift中的巨集定義
在使用OC和swift進行混編時,我們經常會需要在swift中使用OC中的巨集定義,但是這些巨集定義經常會提示無法找到或者型別錯誤,那麼我們到底應該怎麼做
Swift學習仿照OC中的巨集定義
在Swift中不需要去建立header檔案,只需要建立一個類即可,什麼也不用配置。下面是一些本人總結的一些常用的巨集定義:let GWIDTH = UIScreen.main.bounds.size.widthlet GHEIGHT = UIScreen.main.boun
如何為Swift進行巨集定義
這陣子一直在自學Swift, 因為之前iOS的開發一直用Objective-C, 所以習慣了C語言那種巨集定義方式, Swift作為一款更加安全的語言, 放棄了C語言中的巨集定義, 有效的防止預編譯時程式碼巨集替換的安全隱患, 但是也並非不能進行巨集定義, 在這裡我們可
Swift 自定義打印方法
orm rom -m http mat cti nbsp 使用 span Swift 自定義打印方法 #代碼如下 // MARK:- 自定義打印方法 func MLLog<T>(_ message : T, file : String = #file, fun
swift 自定義view VFL 設置約束沖突
不顯示 一個 table ble 漸變 解決方法 dsd mar 控件顯示 1. tableview的cell 上添加了一個自定的view,view上帶圓角,漸變色啥的, 修改按鈕和 刪除按鈕 在人數為0的時候才顯示, 此時在model復制的時候動態改變,cell高度會出現
lua裡實現類似巨集定義,動態生成程式碼
其實就是用了 lua 的 loadstring 功能。 1.把需要動態生成的程式碼拼接成為一個字串。 str 2. loadstring(str) 這個只是解析了程式碼,相當於一個function 需要 執行一下才會生效
c語言巨集定義#define
1. 利用define來定義 數值巨集常量 #define 巨集定義是個演技非常高超的替身演員,但也會經常耍大牌的,所以我們用它要慎之又慎。它可以出現在程式碼的任何地方,從本行巨集定義開始,以後的程式碼就就都認識這個巨集了;也可以把任何東西定義成巨集。因為編譯器會在預編譯的時候用真身替換
C語言開關巨集定義的學習##__VA_ARGS__
最近寫c程式,學到一種開關巨集,極大提高程式的控制性: #define __DEBUG #ifdef __DEBUG #define tnfs_print(format, ...) printf (format, ##__VA_ARGS__) #else #define tnfs_print
cocos2dx 常用函式和巨集定義
最近我們的cocos2d-x遊戲專案已經進入了正式開發的階段了,幾個dev都辛苦碼 程式碼。cocos2d-x還是一套比較方便的api的,什麼action啊、director啊、ccpoint啊都蠻便捷的。但是我看到幾個dev有時 候會很不知道用它們,還是首先自己去寫函式…… 用一些比較原始
巨集定義的用法
有五種用法,含有引數和不含引數,行尾都不用加分號 #define <識別符號> [<替換列表>] //類似於全域性變量了 //如果其他檔案沒有包含定義巨集的檔案,則在巨集定義的位置結束,如果有包含,則到包含的檔案結束 #de
行內函數,巨集定義,記憶體對齊,型別轉換
巨集 與 inline的區別 存在的價值,兩者都是文字替換,降低程式跳轉次數,提高效率 1. define 是預處理命令,無法除錯 ,最簡單文字替換, inline 是編譯期替換,可以除錯, 存在引數型別檢查 2. 使用inline的時候,函式必須定義 直接定義的函式
C/C++中標準巨集定義及其用法
ANSI C標準中有幾個標準預定義巨集 __func__:在原始碼中插入當前所在函式名; __LINE__:在原始碼中插入當前原始碼行號; __FILE__:在原始檔中插入當前原始檔名; __DATE__:在原始檔中插入當前的編譯日期 __TIME__:在原始檔
除錯技巧:封裝printf列印除錯資訊和巨集定義開關
/* #define DEBUG */ #ifdef DEBUG #define DEBUG_ERR(format, ...) \ do{ \ printf("\r\n"); \ printf("FILE: "__FILE__", LINE: %
巨集定義一些用法
一:引數名必須保持一致: #define Fun(a,b) f(a,b) Fun(1,2) ===>f(1,2) #define Fun(a,b) f(a1,b2) Fun(1,2) ==>f(a1,b2) 二:##一些注意事項 #define SIGN(x) INT_x SIGN(3)
如何通過 讀取配置引數 而不是 預編譯 巨集定義方式 來決定是否執行printf函式
在一個專案中,本來開始決定通過巨集定義方式來決定是否進行 printf 列印除錯資訊的,但後面考慮到使用配置引數的方式應該更好,因為通過巨集定義方式,還需要再編譯一遍程式才能進行顯示,而通過讀取配置引數方式,只需要在配置檔案中更改配置項即可,這樣更符合實際需要。 大致思路:先將需要列
C中的預編譯巨集定義
在將一個C源程式轉換為可執行程式的過程中, 編譯預處理是最初的步驟. 這一步驟是由前處理器(preprocessor)來完成的. 在源流程式被編譯器處理之前, 前處理器首
Android.mk中新增巨集定義
在Boardconfig.mk 中新增一個 IMAGE_FOR_FACTORY_TEST:= true 由於Boardconfig.mk和各目錄的Android.mk是相互關聯的 所以我們可以在Android.mk 中新增 一個 ifdef IMAGE_FOR_FACTO
_T 巨集定義
_T 是一個巨集定義,作用是讓你的程式支援 Unicode 編碼 因為 Windows 使用兩種字符集 ANSI 和 UNICODE前者就是通常使用的單位元組方式,但這種方式處理像中文這樣的雙位元組字元不方便,容易出現半個字元的情況,而後者都是雙位元組方式,方便處理雙位元組字元。Wind
巨集定義與符號常量
在C中,“巨集”分為無引數的巨集和有引數的巨集兩種 無參巨集定義 (1)無參巨集定義的一般格式:#define 識別符號 語言符號 字串 其中:"define"為巨集定義命令;"識別符號"為所定義的巨集名,通常用大寫字母表示,以便於與變數區別;“語言符號字串”可以是常數,表示式,