【问题标题】:Calling Wrapper Function From Javascript is Crashing App - React-Native从 Javascript 调用包装器函数会导致应用程序崩溃 - React-Native
【发布时间】:2018-08-15 13:58:37
【问题描述】:

您好,我正在尝试在 javascript 中调用我通过 Objective C 导出的函数。当我在 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 (code=1, address=0x0)

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

欢迎大家帮忙,谢谢!

【问题讨论】:

  • 我遇到了类似的问题,你解决了吗?

标签: ios objective-c react-native


【解决方案1】:

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

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 {
  ...
}

我希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    相关资源
    最近更新 更多