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

非Swift包的混合语言框架:DocC仅生成@objc public Swift类型文档求助

解决方案建议

1. 调整框架构建配置

确保框架的Build Settings中开启纯Swift类型的文档生成支持:

  • 找到Documentation Compiler Options下的Include Non-ObjC Swift Symbols选项,设置为YES,控制DocC是否纳入未标记@objc的Swift公开类型。
  • 确认Build Libraries for Distribution设为YES,该选项会保留Swift符号完整元数据,是DocC生成非ObjC兼容Swift类型文档的必要条件。

2. 正确使用文档可见性属性

_documentation(visibility:)属性的生效需要配合正确的访问控制逻辑:

  • 对于无需出现在文档中的类型,先设置对应访问级别(如internal或private),再添加_documentation(visibility: .private)属性。
  • 该属性仅对DocC已扫描到的类型生效,若类型因未标记@objc被默认排除,属性不会起作用。

3. 自定义DocC符号包含规则

如果默认配置无效,可通过DocC的Info.plist扩展强制指定要包含的纯Swift类型:

  1. 在框架的DocC目录中新建或编辑Info.plist文件。
  2. 添加Symbols数组来声明目标类型,示例格式如下:
<key>Symbols</key>
<array>
  <dict>
    <key>Identifier</key>
    <string>YourFramework.YourSwiftType</string>
    <key>Visibility</key>
    <string>public</string>
  </dict>
</array>

4. 使用命令行工具生成文档

若Xcode GUI构建存在限制,可直接调用docc命令行工具,通过参数精准控制文档生成:

xcodebuild docbuild -scheme YourFrameworkScheme -destination 'generic/platform=iOS' OTHER_DOCC_FLAGS="--include-non-objc-swift-symbols"

通过--include-non-objc-swift-symbols强制包含纯Swift符号,还可搭配--visibility参数过滤不同访问级别的类型。

临时兼容方案

Xcode 15.x版本对非Swift包的混合框架中纯Swift类型的DocC支持存在兼容性问题,若上述方法均无效,可尝试:

  • 将部分纯Swift代码迁移至Swift包,DocC对Swift包的支持更完善,能更好处理纯Swift类型与文档可见性。
  • 暂时保留Jazzy生成纯Swift类型文档,再与DocC生成的文档合并使用。

内容的提问来源于stack exchange,提问作者Juri Pakaste

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 11:43:17