Swift定義宏

  • 因為之前iOS的開發(fā)一直用Objective-C, 所以習(xí)慣了C語言那種宏定義方式, Swift作為一款更加安全的語言, 放棄了C語言中的宏定義, 有效的防止預(yù)編譯時代碼宏替換的安全隱患, 但是也并非不能進(jìn)行宏定義 -- 定義全局變量(聽說類似Java)

swift中定義宏

  • 1.新建文件, 選擇iOS -> Source -> Swift File
swift的.h文件
  • 2.同上, 名字你自己隨心意, 畢竟不重要

  • 3.生成的會是一個.swift空文件, 默認(rèn)應(yīng)該會是Foundation框架, 自己修改為UIKit即可

swift.h文件
  • 4.設(shè)置宏定義
  • swift中的宏定義的意義:
    • 在swift中, 并非是預(yù)編譯代碼替換, 而是設(shè)置全局常量, 簡單宏, 直接let 加常量名即可, 復(fù)雜的宏由于必須保證宏的代碼的語句的合法性, 所以使用函數(shù)進(jìn)行實現(xiàn), 下面會舉例說明:
簡單宏定義
  • 但是這種宏定義遠(yuǎn)遠(yuǎn)不能滿足我們的需要, 如果想要實現(xiàn)上面的那種, 通過對view.X, 獲取到view.frame.origin.x的方式, 就要想其他的辦法了, 因為直接let x = frame.origin.x這種方式明顯不合法


    錯誤的宏定義

    - 就要通過函數(shù)來實現(xiàn)了, 把對象作為一個參數(shù), 返回這個控件的具體屬性(其實就是對frame的get方法的二次封裝, 方便我們的使用),

正確:frame的get方法的二次封裝
  • 5.宏定義的使用: 不需要導(dǎo)入,直接使用
Swift的宏定義在本質(zhì)上并不應(yīng)該稱之為宏定義, 只是為了方便大家的理解, 實質(zhì)上是一些全局常量和函數(shù)



OC中定義宏的方法很多

  • 因為C語言的機制下, 是在編譯代碼時將宏直接替換成你定義的代碼, 所以這在實際使用中, 也是存有安全隱患的
  • 方法一: 直接在需要的類定義
 #define scrren_width [UIScreen mainScreen].bounds.size.width
  • 方法2: 創(chuàng)建.h文件, 導(dǎo)入吃文件就可以使用

  • 1.新建文件, 選擇iOS -> Source -> Header File


    創(chuàng)建.h文件
  • 2.然后隨便起個名字就好下一步下一步, 這里就不贅述了.

  • 3.生成的文件會是一個空的頭文件(Header File)


    .h文件
    1. C語言的宏定義, 并不是很嚴(yán)謹(jǐn), 任何代碼段都可以進(jìn)行宏定義, 甚至是無效的無序的亂碼也可以.
.h文件定義宏
  • 原文摘自JianweiWang
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,512評論 4 61
  • UIGraphicsBeginImageContext(self.view.bounds.size); //c...
    itclimb閱讀 1,306評論 0 0
  • 2017年6月8日晚7:30。 一群來自深圳各處的小伙伴來到“很多人”咖啡館,玩幾盤據(jù)說能提高財商的游戲。 我是第...
    南昌大魔王閱讀 776評論 0 1
  • 四月煙火 成長,總有美妙的瞬間。遍佈荊棘的路上總是歡笑與苦痛並存,如煙火一般。一顆小小 的火柴,一根細(xì)細(xì)地引線,一...
    紫奕_3a28閱讀 504評論 0 1
  • (一) 她沒有軍訓(xùn)過,我沒有見過她的樣子。只記得開學(xué)分班級的時候她來了。她個頭不高也很瘦。一頭烏黑的長發(fā)看起來很清...
    Recollect閱讀 1,062評論 0 0

友情鏈接更多精彩內(nèi)容