剛好看書的時候看到這裡,網上關於橋接的描述也是挺亂的,當年還比較菜鳥的時候查詢這個問題也不是沒被坑過,順便記錄一下方便一下其他人。
一、設定橋接檔案
不管是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檔案裡進行方法宣告(廢話)。