XCode 中 Swift / Objective-C / C / C++ 混合程式設計

EyreFree發表於2019-03-04

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,如圖所示:

1.png

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,如圖所示:

2.png

3.新增 Objective-C 檔案

將需要引入的 Objective-C 檔案新增到專案,然後將相應的標頭檔案新增到橋接檔案 SwiftMixedDemo-Bridging-Header.h 中:

3.png

接下來即可正常呼叫 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
轉載請註明原作者及以上資訊。

相關文章