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

如何在React Native Turbo Module中使用Swift代码?

在React Native Turbo Module中使用Swift代码的解决方案

问题描述

按照官方指南创建Turbo Module后,尝试在其中引入Swift代码实现加法功能:添加了SwiftCalculator.swift文件,修改RTNCalculator.mm通过Objective-C调用Swift逻辑,同时在pod spec中配置了桥接头文件,却触发错误:Using bridging headers with framework targets is unsupported。

相关代码

SwiftCalculator.swift

import Foundation

@objc class SwiftCalculator: NSObject {
    @objc func add(a: Double, b: Double) -> Double {
        return a + b
    }
}

RTNCalculator.mm

#import "RTNCalculatorSpec.h"
#import "RTNCalculator.h"
#import "RTNCalculator-Swift.h"

@implementation RTNCalculator

RCT_EXPORT_MODULE()

- (void)add:(double)a b:(double)b resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
    SwiftCalculator *calculator = [SwiftCalculator new];
    double value = [calculator addWithA:a b:b];
    NSNumber *result = [[NSNumber alloc] initWithDouble:value];
    resolve(result);
}

- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
    (const facebook::react::ObjCTurboModule::InitParams &)params
{
    return std::make_shared<facebook::react::NativeCalculatorSpecJSI>(params);
}

@end

报错的pod spec配置

s.pod_target_xcconfig = { 
    'SWIFT_OBJC_BRIDGING_HEADER' => '../../node_modules/rtn-calculator/ios/RTNCalculator-Bridging-Header.h'
}

错误信息

Using bridging headers with framework targets is unsupported

解决方案

Turbo Module是以Framework形式构建的,iOS不允许Framework目标使用手动桥接头文件,需改用模块自动生成的交互头文件来实现Swift与Objective-C的互通,具体步骤:

  • 移除pod spec中的桥接头文件配置
    直接删除SWIFT_OBJC_BRIDGING_HEADER相关配置项,Framework不支持该设置。

  • 确认Swift类的暴露规则
    你的SwiftCalculator已经正确添加@objc修饰并继承NSObject,这是Swift类能被Objective-C调用的必要条件,无需修改。

  • 保留自动生成的Swift头文件导入
    代码中#import "RTNCalculator-Swift.h"是Framework自动生成的交互头文件,保留即可——这个头文件会自动包含所有暴露给Objective-C的Swift类和方法。

  • 添加Swift版本配置
    在pod spec中声明Swift版本,确保项目能正确识别Swift代码:

    s.swift_version = "5.0" # 可根据项目实际使用的Swift版本调整
    

修正后的pod spec示例

s.swift_version = "5.0"
s.pod_target_xcconfig = {
    # 移除SWIFT_OBJC_BRIDGING_HEADER配置
}

完成以上修改后,重新执行pod install再编译项目即可正常使用Swift代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:45:30