日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

swift 打包sdk_在封装SDK中Swift和OC混编之相互调用

發(fā)布時(shí)間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 swift 打包sdk_在封装SDK中Swift和OC混编之相互调用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

在非SDK中:

1、swift調(diào)用oc

步驟:

創(chuàng)建 工程名-Bridging-Header.h

放入oc的頭文件,swift即可調(diào)用

在swift項(xiàng)目中或者在oc項(xiàng)目中,創(chuàng)建oc或者swift文件,Xcode都會(huì)提示問你是否要?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í)候,你沒有調(diào)用,你也可以自己手動(dòng)創(chuàng)建。

手動(dòng)創(chuàng)建swift調(diào)用oc的頭文件,

步驟:

創(chuàng)建Header File,刪除里面內(nèi)容

工程名-Bridging-Header.h進(jìn)行命名,可自定義

在Build Setting -> Swift Compiler - Code Generation 中,拖入剛才自己手動(dòng)創(chuàng)建的文件,會(huì)自動(dòng)生成路徑。

2、oc調(diào)用swift

步驟:

Targets ->Build Settings -> Packaging中

設(shè)置 Defines Module 屬性為YES

同上路徑,設(shè)置Product Module Name,默認(rèn)為工程名稱,用來修改導(dǎo)入到oc文件中的頭文件的名稱,可不修改。

在需使用到swift的oc類中,導(dǎo)入系統(tǒng)自動(dòng)生成的Product Module Name(工程名)-Swift.h,即#import "工程名-Swift.h"

在swift暴露出來的方法和屬性上要加@objc,command B成功這樣才可以在oc中調(diào)用swift的類了。

注:1. swift中寫的類一定要集成于NSobject,否則無法調(diào)用

2. 如果多個(gè)oc類需要使用,則可以添加到PCH文件中

在封裝SDK中:

1、swift調(diào)用oc

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

步驟:

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

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

然后在對(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è)頭文件

步驟:

這里需要將Product Module Name -Swift.h這個(gè)頭文件的引用改為引用#import 這個(gè)頭文件

【JWEmotionTrackeriOSSDK就是你封裝的SDK名稱】

總結(jié):oc通過xxx-swift.h調(diào)用swift【系統(tǒng)自動(dòng)生成】。swift通過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)建橋接文件。

總結(jié)

以上是生活随笔為你收集整理的swift 打包sdk_在封装SDK中Swift和OC混编之相互调用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。