swift 打包sdk_在封装SDK中Swift和OC混编之相互调用
oc和swift混編之相互調用.jpg
在非SDK中:
1、swift調用oc
步驟:
創建 工程名-Bridging-Header.h
放入oc的頭文件,swift即可調用
在swift項目中或者在oc項目中,創建oc或者swift文件,Xcode都會提示問你是否要創建橋接文件,點擊確認Xcode就會自動創建,名稱的格式是:工程名-Bridging-Header.h
把swift想要調用的oc的頭文件放在這個自動創建的橋接的文件里面,就直接可以調用oc了。是不是很方便呢,當然,如果系統提示的時候,你沒有調用,你也可以自己手動創建。
手動創建swift調用oc的頭文件,
步驟:
創建Header File,刪除里面內容
工程名-Bridging-Header.h進行命名,可自定義
在Build Setting -> Swift Compiler - Code Generation 中,拖入剛才自己手動創建的文件,會自動生成路徑。
2、oc調用swift
步驟:
Targets ->Build Settings -> Packaging中
設置 Defines Module 屬性為YES
同上路徑,設置Product Module Name,默認為工程名稱,用來修改導入到oc文件中的頭文件的名稱,可不修改。
在需使用到swift的oc類中,導入系統自動生成的Product Module Name(工程名)-Swift.h,即#import "工程名-Swift.h"
在swift暴露出來的方法和屬性上要加@objc,command B成功這樣才可以在oc中調用swift的類了。
注:1. swift中寫的類一定要集成于NSobject,否則無法調用
2. 如果多個oc類需要使用,則可以添加到PCH文件中
在封裝SDK中:
1、swift調用oc
iOS 制作framework時,swift調用OC,不支持橋接,故得換一種方式調用。
步驟:
點擊target ->Build Settings -> Allow Non-modular Includes In Framework Modules 設置為YES
然后在 Build Phases 中 Headers 的把你想要調用的oc文件暴露到Public中去
然后在對外的統一接口文件中暴露這個頭文件,如下圖所示:
SDK中swift調用oc暴露方法.jpg
這樣設置完畢之后,你就可以愉快的調用啦!
2、oc調用swift
同樣的方式,在SDK中會提示找不到Product Module Name -Swift.h 這個頭文件
步驟:
這里需要將Product Module Name -Swift.h這個頭文件的引用改為引用#import 這個頭文件
【JWEmotionTrackeriOSSDK就是你封裝的SDK名稱】
總結:oc通過xxx-swift.h調用swift【系統自動生成】。swift通過xxx-Bridging-Header.h調用oc【系統提示生成或手動創建】創建oc項目,xcode不會自動創建橋接文件。需要先創建xxx-Bridging-Header.h,才會生成xxx-swift.h文件。這句話很重要,如果不創建橋接文件,那么會提示 添加好 頭文件之后 調用的時候,Bad receiver type XXX,這時候,需要手動創建橋接文件。
總結
以上是生活随笔為你收集整理的swift 打包sdk_在封装SDK中Swift和OC混编之相互调用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python怎么读单词和古文_Pytho
- 下一篇: java单词200个,请收藏!贼有用