在封裝SDK中Swift和OC混編之相互調(diào)用

oc和swift混編之相互調(diào)用.jpg

在非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中寫的類一定要集成于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è)頭文件,如下圖所示:


    SDK中swift調(diào)用oc暴露方法.jpg

    這樣設(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 前言 記一次oc項(xiàng)目中引用swift開源庫(kù)處理過(guò)程 開源庫(kù) 測(cè)試使用這個(gè)開源庫(kù) 該庫(kù)太老,現(xiàn)在swif都到4.1了...
    DaZenD閱讀 17,653評(píng)論 0 9
  • 前言 點(diǎn)擊簡(jiǎn)書寫文章的時(shí)候發(fā)現(xiàn)還有幾篇文章只寫了標(biāo)題,內(nèi)容還沒(méi)有寫。所以現(xiàn)在趁著午休時(shí)間,把這篇文章完善一下??吹?..
    CoderXLL閱讀 32,866評(píng)論 12 31
  • 亮點(diǎn)一:對(duì)于Xcode提示建立橋接文件時(shí),誤點(diǎn)cancel后的處理方法 亮點(diǎn)二:SDK開發(fā)的時(shí)候,OC與Swift...
    素顏約定閱讀 2,713評(píng)論 0 1
  • 前言: Swift語(yǔ)言出來(lái)后,可能新的項(xiàng)目直接使用Swift來(lái)開發(fā),但可能在過(guò)程中會(huì)遇到一些情況,某些已用OC寫好...
    瘋狂的電腦閱讀 2,440評(píng)論 0 9
  • swift強(qiáng)勢(shì)來(lái)襲,想要緊跟腳步,但之前OC的工程推倒重來(lái)在時(shí)間和實(shí)踐上都有點(diǎn)傷神,混編就是這個(gè)過(guò)渡的橋梁,使...
    _skye閱讀 5,328評(píng)論 8 22

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