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

Swift 4.1自定义框架创建失败求助:类与变量未显现在头文件

Swift 4.1自定义框架公共成员未暴露的排查方案

看起来你遇到的是Swift框架导出公共成员的常见问题,你的代码语法本身没问题,问题大概率出在框架的配置或者目标设置上,我给你梳理几个排查和解决的关键点:

1. 确认框架的基础模块配置

首先检查框架目标的Build Settings:

  • 找到Defines Module选项,确保它被设置为YES——这是Swift框架能够导出模块接口的核心开关,没有开启的话,外部根本无法识别你的框架模块。
  • 同时确认Product Module Name是一个清晰、无冲突的名称(比如不要和系统模块或主项目重名)。

2. 检查文件的Target Membership

你的TestStupidity类所在的.swift文件,一定要确保它的Target Membership只勾选了你的自定义框架目标,而不是主项目的目标。如果不小心把文件归到了主项目里,它就不会被打包进框架,外部自然看不到这个类。

3. 确认Swift模块的正确导入

如果你是在另一个Swift项目里使用这个框架:

  • 先把框架添加到目标的Frameworks, Libraries, and Embedded Content列表中,并且确保嵌入方式是Embed & Sign(针对iOS平台)。
  • 在使用的代码里,必须先导入你的框架模块,比如:
import YourFrameworkName // 替换成你的框架Product Module Name

之后应该就能访问TestStupidity.shared和hello()方法了。

4. 若需Objective-C兼容的额外配置

如果你是想让Objective-C代码能访问这个Swift类,那还需要做两步:

  • 给类添加@objcMembers修饰符(或者给每个需要暴露的成员单独加@objc),修改后的代码如下:
@objcMembers public class TestStupidity: NSObject {
    public static var shared = TestStupidity()
    public func hello() {
        print("hello")
    }
}
  • 回到框架的Build Settings,找到Install Objective-C Compatibility Header,设置为YES,这样系统生成的Objective-C兼容头文件里就会包含这个类的声明,你就能在Objective-C代码里通过导入<YourFrameworkName/YourFrameworkName-Swift.h>来访问它了。

按照这些步骤逐一排查,应该就能解决你的公共类和变量未出现在头文件/模块接口里的问题。

内容的提问来源于stack exchange,提问作者Amogh Shettigar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:01:45