OC/Swift混編

1933497-25cf88f938640850.jpeg

在非SDK中:

1、swift調(diào)用oc

步驟:

  1. 創(chuàng)建 工程名-Bridging-Header.h
  2. 放入oc的頭文件,swift即可調(diào)用
  • 在swift項(xiàng)目中或者在oc項(xiàng)目中,創(chuàng)建oc或者swift文件,Xcode都會(huì)提示問(wèn)你是否要?jiǎng)?chuàng)建橋接文件,點(diǎn)擊確認(rèn)Xcode就會(huì)自動(dòng)創(chuàng)建,名稱的格式是:工程名-Bridging-Header.h
  • 把swift想要調(diào)用的oc的頭文件放在這個(gè)自動(dòng)創(chuàng)建的橋接的文件里面,就直接可以調(diào)用oc了。是不是很方便呢,當(dāng)然,如果系統(tǒng)提示的時(shí)候,你沒(méi)有調(diào)用,你也可以自己手動(dòng)創(chuàng)建。
手動(dòng)創(chuàng)建swift調(diào)用oc的頭文件,

步驟:

  1. 創(chuàng)建Header File,刪除里面內(nèi)容
  2. 工程名-Bridging-Header.h進(jìn)行命名,可自定義
  3. 在Build Setting -> Swift Compiler - Code Generation 中,拖入剛才自己手動(dòng)創(chuàng)建的文件,會(huì)自動(dòng)生成路徑。

2、oc調(diào)用swift

步驟:

  1. Targets ->Build Settings -> Packaging中
    設(shè)置 Defines Module 屬性為YES
  2. 同上路徑,設(shè)置Product Module Name,默認(rèn)為工程名稱,用來(lái)修改導(dǎo)入到oc文件中的頭文件的名稱,可不修改。
  3. 在需使用到swift的oc類中,導(dǎo)入系統(tǒng)自動(dòng)生成的Product Module Name(工程名)-Swift.h,即#import "工程名-Swift.h"
  4. 在swift暴露出來(lái)的方法和屬性上要加@objc,command B成功這樣才可以在oc中調(diào)用swift的類了。
注:1. swift中寫(xiě)的類一定要集成于NSobject,否則無(wú)法調(diào)用
2. 如果多個(gè)oc類需要使用,則可以添加到PCH文件中

在封裝SDK中:

1、swift調(diào)用oc

iOS 制作framework時(shí),swift調(diào)用OC,不支持橋接,故得換一種方式調(diào)用。
步驟:

  1. 點(diǎn)擊target ->Build Settings -> Allow Non-modular Includes In Framework Modules 設(shè)置為YES

  2. 然后在 Build Phases 中 Headers 的把你想要調(diào)用的oc文件暴露到Public中去

  3. 然后在對(duì)外的統(tǒng)一接口文件中暴露這個(gè)頭文件,如下圖所示:

    image

    這樣設(shè)置完畢之后,你就可以愉快的調(diào)用啦!

2、oc調(diào)用swift

同樣的方式,在SDK中會(huì)提示找不到Product Module Name -Swift.h 這個(gè)頭文件
步驟:

  1. 這里需要將Product Module Name -Swift.h這個(gè)頭文件的引用改為引用#import <JWEmotionTrackeriOSSDK/JWEmotionTrackeriOSSDK-Swift.h>這個(gè)頭文件
    【JWEmotionTrackeriOSSDK就是你封裝的SDK名稱】

總結(jié):oc通過(guò)xxx-swift.h調(diào)用swift【系統(tǒng)自動(dòng)生成】。swift通過(guò)xxx-Bridging-Header.h調(diào)用oc【系統(tǒng)提示生成或手動(dòng)創(chuàng)建】創(chuàng)建oc項(xiàng)目,xcode不會(huì)自動(dòng)創(chuàng)建橋接文件。需要先創(chuàng)建xxx-Bridging-Header.h,才會(huì)生成xxx-swift.h文件。這句話很重要,如果不創(chuàng)建橋接文件,那么會(huì)提示 添加好 頭文件之后 調(diào)用的時(shí)候,Bad receiver type XXX,這時(shí)候,需要手動(dòng)創(chuàng)建橋接文件。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容