从 Javascript 调用包装器函数是崩溃的应用程序 - 反应原生



您好,我正在尝试调用通过Objective C导出的javascript函数。当我在javascript中调用我的函数时,我的应用程序崩溃了。

RCT_EXPORT_METHOD(getModelAsync:()
resolver:(RCTPromiseResolveBlock)resolve
rejecter:(RCTPromiseRejectBlock)reject)
{
NSError *error;
NSString *contents = [[UIDevice currentDevice] model];
if (contents) {
resolve(contents);
} else {
reject(@"Test", @"Something is broken",error);
}
}

它在 if 语句上失败,并出现此错误:线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x0(

if (!RCTIsIdentifierHead(**input)) {
return NO;

欢迎所有帮助,谢谢!

我今天遇到了这个问题并设法解决了它。看起来函数参数类型不匹配。当函数类型不兼容时,似乎会触发此错误。类似于以下代码片段的内容将触发此错误,因为字典与类型字符串不兼容,因此无法正确转换函数参数。

模块.m

RCT_EXTERN_METHOD(myFunction: (NSDictionary)options)

模块.swift

@objc
func myFunction(_ options: String) -> Void {
...
}

要修复它,请确保您正在执行以下操作:

FixedModule.m

RCT_EXTERN_METHOD(myFunction: (NSDictionary)options)

固定模块.swift

@objc
func myFunction(_ options: NSDictionary) -> Void {
...
}

我希望这有帮助!

相关内容

最新更新