You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift子模块协议导入Objective-C类报错,如何解决?

问题:Objective-C类中导入Swift子模块协议时提示找不到声明

我正在开发一款App,部分子模块(.xcproject)采用Swift编写,主目标的部分内部模块采用Objective-C编写,此前一切正常。

现在想在Objective-C类中实现某Swift子模块的功能,项目其余部分通过遵循协议的扩展将依赖导入父类,示例代码如下:

// Swift 代码
@objc public protocol MyProtocol { }

class ParentClass: MyProtocol { } // 这样所有子类都能继承父类的协议遵循

class ChildClass: ParentClass { }

我已在可正常识别的桥接头文件中添加:

#import <MySubModule/MySubModule.h>

在Objective-C类中导入MainApp-Swift.h后,尝试让扩展遵循协议时出现错误:Cannot find protocol declaration for MyProtocolFromSubModule,尽管子模块已添加且协议存在于MainApp-Swift.h中,相关代码如下:

@interface SomeClassIExtend (SWIFT_EXTENSION(MainApp)) <MyProtocolFromSubModule>
@end

解决方案

将Swift子模块中的协议修改为Objective-C兼容协议,同时确保协议在子模块中公开并导出,具体操作:

  • 确保协议添加@objc修饰符(已有则跳过),保证Objective-C可识别
  • 协议需用public修饰,确保能被外部模块访问
  • 在子模块配置中确认该协议已导出到模块头文件中

完成上述操作后,即可通过导入子模块的方式在Objective-C中正常访问该协议。

内容的提问来源于stack exchange,提问作者Ruben Mim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 05:37:39