我有一个关于新的 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
我想你可能想看看 Nitro 模块:
直接 Swift <> C++ 互操作
与 Turbo- 或 Expo-Modules 不同,Nitro-Modules 根本不使用 Objective-C。 Nitro 是使用新的 Swift <> C++ 互操作构建的,它接近于 > 零开销。
目前它还不能轻松支持 View Components 的 Fabric,但如果它只是用于 Turbo Module 替代方案,那么它似乎是目前连接到 swift 的最简单方法。