iOS OC调用Swift

2021-10-29 15:06:10 浏览数 (1)

前提

目前TRTC官网上提供的一些场景化demo(比如TUIMeeting

)是用的swift写的,下面以OC项目中集成TUIMeeting这个组件为例简单介绍下OC

调用swift

正文

1、集成TUIMeeting组件直接参考TRTC官网文档https://cloud.tencent.com/document/product/647/45681

2、添加swift 文件,只要是混编无论是在oc项目中添加swift文件,还是swift项目中添加oc文件,会提示添加一个桥文件 名字为XXX-Bridging-Header.h

创建swift文件创建swift文件
首次创建swift文件Xcode自动生成的,点击创建首次创建swift文件Xcode自动生成的,点击创建

3、Target-> Bulid Settings ->输入packa 设置Defines Module 为Yes

4、设置圆框内 为当前工程名

5、在你要调swift文件的oc类中导入“项目名-Swift.h”文件,command 鼠标点击看是否能进到文件中

6、进不去“项目名-Swift.h”文件就自己创建一个以”项目名-Swift.h”文件

7、回到第5步进到“项目名-Swift.h”文件,你很可能进到下面这个里面

8、删除本地自己创建的“项目名-Swift.h”文件,再重复第5步进来就能看的你需要的“项目名-Swift.h”文件了

然后就可以在OC类中导入“项目名-Swift.h”文件调swift文件了

最后

因为是以TUIMeeting为例,直接用pod集成的TUIMeeting组件中有些类如TRTCMeetingMainViewController、TRTCMeetingMemberViewController引用不到;跟到错误中看到有一个TUIMeeting-Swift.h文件,

TUIMeeting-Swift.h里面发现没有TRTCMeetingMainViewController、TRTCMeetingMemberViewController转成OC的部分

TUIMeeting-Swift.hTUIMeeting-Swift.h

上面这种情况我了解到TUIMeeting组件设计的思路是尽可能少的对外暴露接口 所以只对外暴露了一个TRTCMeetingNewViewController 这个类,通过初始化这个类之后,用户不需要操心里面具体的实现业务的,所以没有对外暴露上面提到的TRTCMeetingMemberViewController和TRTCMeetingMainViewController,如果需要高度自定义的话,建议用户拿到源码后可以根据自身业务需求修改TRTCMeetingMemberViewController和TRTCMeetingMainViewController类。

现在文档已标清哪些是私有类https://cloud.tencent.com/document/product/647/45681

0 人点赞