当前位置: 代码网 > it编程>App开发>苹果IOS > Framework中实现OC和Swift的混编方案

Framework中实现OC和Swift的混编方案

2024年05月18日 苹果IOS 我要评论
背景:ios工程中实现的oc和swift混编的方案和实现步骤已经很多了,在此不做赘述,本篇文章需要描述的是实现在framework下的混编。解决方案:必要的设置(framework target对应的

背景:

ios工程中实现的oc和swift混编的方案和实现步骤已经很多了,在此不做赘述,本篇文章需要描述的是实现在framework下的混编。

解决方案:

必要的设置(framework target对应的buildsetting):

defines module - yes

product module name - framework名称

install objective-c compatibility header - yes

objective-c generated interface header - framework名称-swift

objective-c bridging header - framework名称/productmodulename-bridging-header.h(设置后编译会报错,后面会给出解决方案)

桥接文件-swift调用oc时可以在该文件中添加oc头文件

oc调用swift:

swift类使用@objcmembers进行修饰,继承自nsobject或其子类

swift类定义

#import "productname/productmodulename-swift.h"

一般默认为framework的名称

swift调用oc:

在productmodulename-bridging-header.h文件中引入swift需要调用的oc头文件

在这个桥接文件里面引用你想暴露给swift调用类的头文件

说明:这个桥接文件需要自己手动创建

坑:

在oc类中引用swift编译之后的头文件,必须采用"productname/productmodulename-swift.h"方式,使用productmodulename-swift.h方式,会提示找不到该文件

如果未设置objective-c bridging header,引用productname/productmodulename-swift.h头文件之后依然无法在oc类中调用swift类,因为设置objective-c bridging header后,才会编译swift类到productmodulename-swift.h中

设置objective-c bridging header后swift类被翻译成oc类,才可以被oc调用

设置objective-c bridging header后编译报错using bridging headers with framework targets is unsupported,解决方案就是修改productmodulename.h这个文件名称为其他名称,比如:productmodulenameheader.h

这个文件改动之后可能会出现头文件引用导致的问题,需要自己动手解决

以上就是framework中实现oc和swift的混编方案的详细内容,更多关于framework oc swift混编的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com