77-Swift之Pch文件與宏定義

引言

在OC的開發(fā)中,Pch (Prefix-Compiled Header) 是一個標準的預(yù)編譯頭文件。在Pch 中定義的內(nèi)容(宏、方法、函數(shù)等)我們都可以在工程中直接引用。但是,在Xcode6的時候,蘋果移除工程自動創(chuàng)建Pch文件。因此,我們相使用 Pch文件的話需要我們手動創(chuàng)建和添加。

Swift 中的 'Pch'

在Swift 中的 'Pch'是由 Swift File 選項創(chuàng)建的文件,該文件的后綴是 .swift 。該文件創(chuàng)建后不需要任何配置就可以使用定義的常量和函數(shù)等。但是 Swift 中也可以添加 Pch文件,不過的是改 Pch 是OC范圍的,如果要使用其定義的宏和函數(shù),那必須使用 Swift 調(diào)用OC的橋接。

Swift 中的 Swift File 文件的創(chuàng)建和使用

說明:Swift File 創(chuàng)建的文件是以 .swift 后綴結(jié)尾的,不需要任何配置,就可以使用其中的常量和函數(shù)等。

1> 第一步:創(chuàng)建工程并點擊一個控制器,然后鼠標左鍵選擇[New File...] 選項,如下圖所示:

933D2BE6-8236-40B4-9DDF-84C6B9B81F63.png

2> 按照第一步進行會進入下面模塊的選擇,然后選擇 [Swift File] 模塊。如下圖所示:

89E01785-D88F-4726-B315-AA6BA27DA641.png

3> 經(jīng)過第二步,我們點擊 Next 后,進入文件命名的界面,然后給文件命名為 SwiftHeader ,如下圖所示:

588E942F-8DB5-49EB-B231-E4C638658FEA.png

4> 經(jīng)過第三步,然后我們點擊 Create 后,在工程中得到我們創(chuàng)建的Swift File文件 SwiftHeader.swift。如下圖所示:

C4B012E4-1A12-4862-95BB-B10AE82BFC7B.png

5> 我們在創(chuàng)建的 SwiftHeader.swift文件中創(chuàng)建常量和函數(shù)如下圖所示:

9F2B163D-06EB-469A-ADDC-8C3F5625C3FD.png

6> 我們對我們創(chuàng)建SwiftHeader.swift中的常量和函數(shù)的測驗,如下圖所示:

E2C78838-24B7-4C25-A0C7-21F4754B6E20.png

7>對Swift 項目使用 Swift File文件的總結(jié)

經(jīng)過第六步的測試,我們可以在工程的全局調(diào)用SwiftHeader.swift中的常量、函數(shù)、回調(diào)等。

Swift 中的Pch文件的創(chuàng)建和使用

1、在工程中選擇一個控制器,然后鼠標左鍵選擇 New File...選項,然后進入模塊選擇區(qū),我們將區(qū)域滾動到 other區(qū)域,我們就可以看到一個 PCH File的紅色文件,如下圖所示:

D0747532-FA33-43E8-A6AF-026E27820195.png

2、經(jīng)過第一步,我們點擊 Next,進入下一步,給文件的命名,我們命名為PrefixHeader ,如圖下圖所示:

7110DC54-4CBD-4D2F-BAB4-D872AF79D512.png

3、我們點擊 Create 后,在工程里面我們就可以看到我們創(chuàng)建的 PrefixHeader.pch文件。如下圖所示:

C389CC40-CD2E-481F-9301-6B92831F1CFD.png

4、我們在創(chuàng)建的 PrefixHeader.pch中定義宏和函數(shù)等,如下圖所示:

63DD6863-5EB8-444A-A976-8CB82E8FCC1A.png

注意:到該步驟,我們文件也創(chuàng)建了,函數(shù)和宏也定義了,我們現(xiàn)在是否可以使用它們了呢?答案是:不可以?。?!因為,PrefixHeader.pch是OC類型的文件,如果要在Swift 工程中使用,就不必須使用文件的橋接文件。接下來我們就創(chuàng)建這個橋接文件。

6、創(chuàng)建Swift 調(diào)用OC 文件的橋接文件 Swift_Pch-Bridging-Header.h,在工程中點擊鼠標左鍵,選擇New File... 選項,進入模塊選區(qū)。在Source區(qū)域中選擇Cocoa Touch Class 選項,進入配置界面,在配置界面的 Language中選擇 Objective-C 和你創(chuàng)建的文件的父類和名字,然后,Xcode就會彈出一個 Would you like to configure an Objective-c bridging header?標題的彈框。如下圖所示:

3615AFDB-BA1A-4600-B042-A6A8D272C235.png

7、我們在第六步中選擇 Create Bridging Header 按鈕,創(chuàng)建一個 Swift_Pch-Bridging-Header.h的橋接文件,如下圖所示:

C4F8BC9B-42E8-49C1-BAB4-F3EA4C5B67A9.png

8、在Swift_Pch-Bridging-Header.h 引入 PrefixHeader.pch文件,如下圖所示:

8CCBB301-6B13-4678-8D66-ADBFE7882BEA.png

9、在 Swift 的項目中測試使用 PrefixHeader.pch文件中定義的宏(數(shù)值、字符差),其中,函數(shù)不能使用,如下圖所示:

833FBF1F-06E2-41E6-9680-39142B591A22.png

10、那我們?nèi)绾握{(diào)用在PCH中定義的函數(shù)呢?

經(jīng)過第九步的測試,我們目前只可以調(diào)用一些簡單的常量,函數(shù)不能夠調(diào)用。我們那如何使用PCH 中我們定義的函數(shù)紅呢?答案是:使用一個Objective-C的一個繼承與NSObject 的類。在該類中實現(xiàn)對用PCH 函數(shù)宏的方法名字,在該類中調(diào)用PCH中定義的宏。創(chuàng)建的繼承與NSObejct類的文件是ConfigManager.hConfigManager.m,如下圖所示:

1、ConfigManager.h 圖
122491D8-4DA3-4C0A-B038-BBC9AA5F906C.png
2、ConfigManager.m 圖
6B7285BD-201D-449F-B6C2-F53774E90115.png

11 、我們再次在項目中測試,別忘了把 #import "ConfigManager.h" 加入到Swift 調(diào)用OC的過度橋中,測試結(jié)果如下:

88CE677E-31CE-46E2-A43E-D794104AD95F.png

12 、總結(jié)

經(jīng)過測試,我們終于可以調(diào)用Objective-C的PCH文件,這樣使用不足之處,就是使用一個 Object_OC的類進行,宏和方法的轉(zhuǎn)換,在用該類在Swift 中使用宏函數(shù)。所以,不建議使用第二種,建議第一種使用'PCH'的方法。

最后編輯于
?著作權(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)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,694評論 19 139
  • ????2014年的蘋果全球開發(fā)者大會(WWDC),當Craig Federighi向全世界宣布“We have ...
    jackfrued閱讀 5,984評論 11 49
  • 2014年的蘋果全球開發(fā)者大會(WWDC),當Craig Federighi向全世界宣布“We have new ...
    yeshenlong520閱讀 2,405評論 0 9
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,323評論 25 708
  • 離開城市好幾個月,回到鄉(xiāng)下農(nóng)村發(fā)呆,勞作,思考人生。 因為車禍,做了手術(shù)。家里又沒有人在,家里覺得我可以在家煮飯吃...
    駱駝和馬閱讀 372評論 0 0

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