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

Xcode 15的#Preview宏破坏framework的.swiftinterface文件

解决#Preview宏在XCFramework中未展开导致的编译错误

问题根源在于Xcode构建框架时,默认不会将#Preview宏从公开接口中移除,而该宏仅用于预览场景,不应出现在框架的.swiftinterface文件中,最终导致集成到应用后触发“顶级不允许表达式”的编译错误。

方案一:通过编译条件排除Preview代码

  • 在框架Target的构建设置中,找到SWIFT_ACTIVE_COMPILATION_CONDITIONS,为你用于构建XCFramework的配置(通常是Release)添加自定义编译标记,比如FRAMEWORK_BUILD。
  • 在包含#Preview的视图文件中,用条件编译包裹预览代码:
    #if !FRAMEWORK_BUILD
    #Preview {
        YourCustomView()
    }
    #endif
    
    这样在构建XCFramework时,Preview代码会被直接排除,不会进入.swiftinterface文件。

方案二:隔离Preview代码到专属文件

  • 创建单独的预览文件,比如YourView+Preview.swift,将#Preview宏放在这个文件中。
  • 在该文件的Target Membership设置里,取消勾选用于构建XCFramework的Release配置,只保留Debug模式的勾选。
    构建XCFramework时,这个文件不会被纳入编译产物,自然不会将Preview宏带入公开接口。

补充说明

#Preview是Xcode15引入的编译期宏,仅用于Xcode的画布预览。框架构建时,公开接口会生成.swiftinterface供下游应用调用,默认情况下宏不会被自动过滤,因此必须通过上述方式主动排除预览代码,避免冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:23:11