如何通过 Swift 使用 React Native 0.76.0 新架构(Turbo 模块)

问题描述 投票:0回答:1

我有一个关于新的 React Native 架构(Turbo 模块)的问题,它从 RN 0.76.0 开始默认启用......目前我所有的原生 IOS 代码主要是用 Swift 和 ObjC 接口实现的。谁能解释一下如何将我的 Swift 模块与新的 Turbo 模块 (ObjC++) 连接起来。我遵循了这个文档:https://reactnative.dev/docs/turbo-native-modules-introduction并得到了一个简单的测试实现(没有Swift)工作。那么我如何扩展我的代码以让 Swift 执行逻辑呢?

到目前为止我的工作代码:

//
//  RCTNativeTestModule.h
//  RnTurboModuleTryout
//
//

#import <Foundation/Foundation.h>
#import <NativeTestModuleSpec/NativeTestModuleSpec.h>

NS_ASSUME_NONNULL_BEGIN

@interface RCTNativeTestModule : NSObject <NativeTestModuleSpec>

@end

NS_ASSUME_NONNULL_END
//
//  RCTNativeTestModule.m
//  RnTurboModuleTryout
//
//
#import "RCTNativeTestModule.h"

@implementation RCTNativeTestModule

RCT_EXPORT_MODULE(NativeTestModule)

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

(NSDictionary )getAnswer {
NSDictionarydict = @{@"answer": @"Hello, here is the answer"};
return dict;
}

我想知道一种使用 Swift 的方法,就像这篇博客中关于 theo old arch 所解释的那样。

https://medium.com/@jtaverasv/native-modules-swift-based-the-basics-react-native-4ac2d0a712ca

ios swift react-native objective-c++ react-native-turbomodule
1个回答
0
投票

我想你可能想看看 Nitro 模块:

直接 Swift <> C++ 互操作

与 Turbo- 或 Expo-Modules 不同,Nitro-Modules 根本不使用 Objective-C。 Nitro 是使用新的 Swift <> C++ 互操作构建的,它接近于 > 零开销。

目前它还不能轻松支持 View Components 的 Fabric,但如果它只是用于 Turbo Module 替代方案,那么它似乎是目前连接到 swift 的最简单方法。

© www.soinside.com 2019 - 2024. All rights reserved.