TypeError:未定义不是对象“installCoreFunctions”react-native-reanimated [iOS]
尝试使用
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self
launchOptions:launchOptions];
RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
moduleName:@"MyApp"
initialProperties:nil];
但是现在这又出现了一个错误,应用程序无法构建
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AppDelegate sourceURLForBridge:]: unrecognized selector sent to instance 0x283b010e0'
在通过以下方式更新
initialProperties:nil
至
initialProperties:${}
时: https://gist.github.com/ybonnetain/7b3e510050447ae52c0f8d6dd741d9d4
它给出了一个新的错误
Use of undeclared identifier '$'
我当前的 AppDelegate.m
react-native 0.70.1
react 18.1.0
react-native-reanimated 2.9.1
com.facebook.react.JavaScript (9): EXC_BAD_ACCESS (code=1, address=0xffffa0000c250698)
我怀疑 JSI 模块早期没有 VM 引用。
确保在
RCTBridgeDelegate
的帮助下使用适当的初始化程序来初始化反应根视图,而不是
RCTRootView::initWithBundleURL
。
这是您的头文件 (.h)
如果它未在其他地方使用,它可能在 .m 中。
无论如何,它必须声明实现将符合
RCTBridgeDelegate
。
#import <React/RCTBridgeDelegate.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate>
@end
这是您的实现文件详细信息 (.m)
您必须导入:
- 定义协议的标头
- bundle URL 提供程序
- react root view
#import <React/RCTBridgeDelegate.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
因为您符合上述协议,所以您必须实现
sourceURLForBridge
方法。
这样,我们将能够创建一个桥接实例,它将知道在哪里查找 JS 包。
此处
RCTBundleURLProvider
可能适用于调试和发布版本,我不记得了,但请根据您自己的需求进行调整。
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
#if DEBUG
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
}
现在在
didFinishLaunchingWithOptions
钩子中,您需要
- 创建桥接实例
- 通过将桥接引用传递给它来初始化 React 视图。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self // -> self because it is self that conforms to RCTBridgeDelegate
launchOptions:launchOptions];
RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
moduleName:@"MyApp"
initialProperties:@{}];
rootView.backgroundColor = [UIColor whiteColor];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.rootViewController = rootView;
[self.window makeKeyAndVisible];
return YES;
}
@end
现在
InnerNativeModule.installCoreFunctions
错误应该已解决。