oc與swift檔案的相互呼叫方式——橋接

Lynx發表於2022-11-24
剛好看書的時候看到這裡,網上關於橋接的描述也是挺亂的,當年還比較菜鳥的時候查詢這個問題也不是沒被坑過,順便記錄一下方便一下其他人。

一、設定橋接檔案

不管是objective-c呼叫swift,還是swift呼叫objective-c,都需要建立橋接檔案,透過橋接檔案實現兩者的相互呼叫。
當我們引入oc或者swift進入另一個語言的專案的時候系統會提示是否自動建立橋接檔案,此時可直接建立。
但除此之外我們也可以選擇手動建立。此時需要我們在新建檔案裡選擇Header File,點選確認建立橋接檔案,橋接檔名字一般為:ProjectName-Bridging-Header.h。然後在Build settings裡搜尋bridging,找到Objective-C Bridging Header的選項,將該檔案的路徑填寫進去,或者直接拉入。這裡的路徑最好選擇相對路徑的形式(ProjectName/BridgingFileName.h)。
ProjectName為你專案的專案名,BridgingFileName為橋接檔案的名字。

二、橋接方法

oc專案呼叫swift檔案

oc專案針對swift檔案會自動建立ProjectName-Swift.h檔案,該檔案不需要我們去做更改,所以當我們設定完橋接檔案之後,只需要在要呼叫的檔案處import該標頭檔案即可,即:import <ProjectName-Swift.h>,其中ProjectName為該專案的工程名。引入該標頭檔案後,即可呼叫Swift對應的類和方法。

注意點:引入的swift檔案需要呼叫的類和方法需要進行修飾,然後oc專案才能呼叫。可使用@objcMembers直接修飾類,或者也可以使用@objc分別修飾想要呼叫給oc的方法和屬性,然後oc專案就可呼叫swift的相關方法了。

swift專案呼叫oc檔案

swift專案呼叫oc檔案更為簡單,只需要將oc類的標頭檔案匯入橋接檔案即可,需要呼叫哪個oc檔案就import哪個標頭檔案(#import "ClassName.h")進去。
swift專案呼叫oc的類和方法不需要引入標頭檔案,所以設定完之後可以直接在swift中直接呼叫oc方法。

注意點:需要被呼叫的oc檔案的方法需要寫在.h檔案裡進行方法宣告(廢話)。

相關文章