从Javascript调用包装器函数会导致App崩溃-React-Native

时间:2018-08-15 13:58:38

标签: ios objective-c react-native

你好,我试图在通过目标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;

欢迎所有帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

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

Module.m

RCT_EXTERN_METHOD(myFunction: (NSDictionary)options)

Module.swift

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

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

FixedModule.m

RCT_EXTERN_METHOD(myFunction: (NSDictionary)options)

FixedModule.swift

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

我希望这会有所帮助!