一. 在swift中調(diào)用oc.
-
創(chuàng)建名為
項(xiàng)目名+Bridging-Header.h的文件,注意名稱一定要一模一樣。
-
在
Build Settings->Objective-C Bridging Header中指定路徑。若是自動創(chuàng)建的,系統(tǒng)已經(jīng)給你生成好了,否則就要自己添加目錄了。
-
在橋接文件中導(dǎo)入要使用的.h文件,如圖:image.png
-
注意若提示無法找到文件,則檢查是否已經(jīng)關(guān)聯(lián)到swift項(xiàng)目的target上:
-
在swift中調(diào)用oc中的Category類方法編譯不通過的問題:就是在
NSString+Helper.h中定義了一個(gè)類方法,但轉(zhuǎn)換的時(shí)候Swift自動轉(zhuǎn)換成了init方法,with前面的省略,with后面的作為參數(shù):
如上圖,編譯器在轉(zhuǎn)換時(shí)自動將方法轉(zhuǎn)換成了:
convenience init(text: String?)
所以調(diào)用的時(shí)候,如果顯示不出方法來,可以這么調(diào)用:
let str = NSString.init(text: "")
二. 在oc中調(diào)用swift.
- 在swift的代碼要能被oc調(diào)用,其定義的類要繼承自NSObject,函數(shù)要用@objc定義?;蛘咴陬惖拈_頭用@objcMembers修飾,這樣類的所有屬性和方法都能被oc訪問。如下圖:

- xcode已經(jīng)默認(rèn)生成一個(gè)用于OC調(diào)用Swift的頭文件,文件名格式是:
Target名稱-Swift.h。

- 在oc的代碼中導(dǎo)入這個(gè)文件,在相應(yīng)的方法中調(diào)用swift的代碼。






