从 Javascript 调用包装器函数会导致应用程序崩溃 - React-Native
Posted
技术标签:
【中文标题】从 Javascript 调用包装器函数会导致应用程序崩溃 - React-Native【英文标题】:Calling Wrapper Function From Javascript is Crashing App - 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;
欢迎大家帮忙,谢谢!
【问题讨论】:
我遇到了类似的问题,你解决了吗? 【参考方案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
...
我希望这会有所帮助!
【讨论】:
以上是关于从 Javascript 调用包装器函数会导致应用程序崩溃 - React-Native的主要内容,如果未能解决你的问题,请参考以下文章
从 Bokeh Google Maps 包装器 (fitBounds()) 调用 Javascript 方法
使用格式化参数包装调用 Context.getString 会导致 IllegalFormatConversionException