Swift 是蘋果於2014年 WWDC 釋出的一種新的用於編寫 iOS 和 OS X 應用的程式語言,可與 Objective-C / C / C++ 進行混合程式設計。
一. Objective-C 呼叫 C
Objective-C 是 C 的超集,所以 Objective-C 完全相容 C,可以直接在 Objective-C 程式碼中寫 C 程式碼無需修改。
二. Objective-C 呼叫 C++
Xcode 需要原始檔以 .mm 為副檔名,這樣才能啟動編譯器的 Objective-C++ 擴充套件,在 .mm 檔案內可以編寫 C++ 程式碼也可以編寫 Objective-C 程式碼,支援大部分的 C++ 的特性,幾乎完全相容 GNU C/C++。
三. Swift 呼叫 Objective-C
1.新增橋接檔案
新增一個新的標頭檔案到工程中作為橋接檔案,建議命名為 {project_name}-Bridging-Header.h,這裡我命名為 SwiftMixedDemo-Bridging-Header.h,如圖所示:
2.設定 Objective-C Bridging Header
選中工程名,切換到 Build Settings 選項卡,選中 All,在右上角的搜尋欄中輸入 bridging 找到 Objective-C Bridging Header 一項,並將其設為 {project_name}/{project_name}-Bridging-Header.h,這裡我設為 SwiftMixedDemo/SwiftMixedDemo-Bridging-Header.h,如圖所示:
3.新增 Objective-C 檔案
將需要引入的 Objective-C 檔案新增到專案,然後將相應的標頭檔案新增到橋接檔案 SwiftMixedDemo-Bridging-Header.h 中:
接下來即可正常呼叫 Objective-C 檔案中的程式碼。
4.Swift 呼叫 C/C++
並且 Swift 不能直接呼叫 C/C++,但可以通過呼叫 Objective-C 程式碼的方式間接呼叫 C/C++。
四. Objective-C 呼叫 Swift
唔,只要在需要呼叫的地方引用如下標頭檔案即可:
#import "{project_name}-Swift.h"
複製程式碼
不過需要注意的是,Swift 4 的 @objc 推斷預設是關閉的,需要暴露給 OC 的話,需要手動在類或屬性或方法名前新增 @objc
標識。
PS:{project_name} 代指工程名。
以上。
如有任何智慧財產權、版權問題或理論錯誤,還請指正。
https://juejin.im/post/5a321373f265da432241371a
轉載請註明原作者及以上資訊。