寫在前面: Swift 代碼訪問 Objective-C 代碼篓吁,或者反之谷誓。導(dǎo)入外部框架時腻窒,請先確保 TARGETS --> Build Settings --> Packaging --> Defines Module 設(shè)置為 Yes效斑。
在一個工程中導(dǎo)入一些 Objective-C 文件供 Swift 代碼使用時,你需要依賴與 Objective-C 的橋接頭文件(Bridging-Header)來暴露給 Swift峻贮。當(dāng)你添加 Swift 文件到現(xiàn)有的 Objective-C 工程(或反之)時,Xcode 會自動提示是否創(chuàng)建橋接文件应闯,點(diǎn)擊Yes即可創(chuàng)建以 Bridging-Header 為后綴的橋接文件
注意:1.確保在 Build Settings
-> Objective-C Bridging Header 中設(shè)置橋接文件的自身真實(shí)路徑(文件夾中的路徑)纤控,而不是它所在的目錄,如 工程名/橋接文件名碉纺。
2.TARGETS --> Build Settings --> Embedded Content Contains Code 設(shè)置為 Yes船万。
**Swift 調(diào)用 OC : **
1.在橋接文件中導(dǎo)入你需要使用的OC頭文件,即可在整個工程下的Swift文件中用swift的語法使用OC的代碼骨田,就像使用系統(tǒng)自帶的Swift類一樣耿导。
若 #import "xxxxx.h" 時提示 "xxxxx.h" file not found 則設(shè)置 xxxxx.h 文件的Target Membership 為 Public
***OC 調(diào)用 Swift : ***
1.在 swift 類名前加上 @objc 關(guān)鍵字 ,如果不行态贤,在@objc后再加上 public 關(guān)鍵字舱呻。(我使用時單加一個 public 關(guān)鍵字是沒有問題的)
2.在需要調(diào)用Swift的OC類中導(dǎo)入 #import "Product Mould Name -Swift.h",當(dāng)這樣導(dǎo)入提示:file not found 時悠汽,嘗試將頭文件改為: #import "Product Mould Name/Product Name -Swift.h" 箱吕。
Product Name 和 Product Mould Name 可以在工程下 TARGETS --> Build Settings --> Packaging 條目下找到芥驳,導(dǎo)入上面Swift.h 的頭文件后可以使用工程下所有的Swift類,前提是要滿足第1點(diǎn)茬高。
CMD + 左鍵 點(diǎn)擊進(jìn)入Swift.h 的頭文件兆旬,你會發(fā)現(xiàn)原有的被 public 修飾的 Swift 類已被自動編譯成 OC的代碼安靜的躺在那里等你調(diào)用(如果已經(jīng)在需要的類名前加上 public 修飾,還是沒有發(fā)現(xiàn)那個類雅采,請 CMD+B編譯一下)爵憎,需要調(diào)用Swift 的屬性也是一樣的道理。
注意;楣稀1摹!
注意0涂獭S拚 !
注意:恪Aち取!
2017.6.2更新:
1.若需要自行創(chuàng)建橋接文件柠座,創(chuàng)建好文件后需將文件拉至圖中1處(讓Xcode知道橋接文件的路徑)
2.OC調(diào)用Swift使用的頭文件名稱為圖中2指向處名稱邑雅。