swift和OC混编报错问题

本文讲述了在iOS13及以上版本中,如何将Objective-C实例方法从扩展移到主类实现,以及在模块化开发中弃用bridgingheaders,改用moduleinterface解决框架中Objective-C与Swift交互的问题。介绍了如何创建module.modulemap文件并导入Objective-C头文件以在Swift中无缝使用Objective-C代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.‘@objc’ instance method in extension of subclass of ‘xxx’ requires iOS 13.0.0

需要把实现从扩展移到主类实现。iOS13一下扩展不支持@objc

2.using bridging headers with framework targets is unsupported 报错

这个错误通常指的是在一个框架目标中使用桥接头是不支持的。在Xcode 11以后的版本中,使用模块化编程的方式进行开发成为了推荐的方式,而桥接头只能在非模块化的代码中使用。

如果你需要在框架中使用Objective-C代码,可以考虑使用模块接口(module interface)代替桥接头文件。模块接口文件是一个描述框架接口的文件,它会自动将Objective-C代码导入到Swift中。

你可以使用以下步骤来替换桥接头文件:

创建一个名为module.modulemap的文件,并将其添加到框架的根目录中。
在这里插入图片描述
手搓文件,随便整个更改名称即可

在module.modulemap文件中添加以下内容:

frameworkmodule { umbrella header".h"exportmodule {export* }}

其中,是框架的名称,将其替换为你的框架名称。

将Objective-C头文件添加到umbrella header指令所指定的头文件中。例如,如果你的框架名称是MyFramework,则需要将所有Objective-C头文件添加到MyFramework.h文件中。

在Swift代码中导入你的框架。

importMyFramework

通过使用模块接口来代替桥接头文件,你可以在Swift中更方便地使用Objective-C代码,而无需担心桥接头文件的限制。

参考资料:https://www.jianshu.com/p/08e36574855b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值