错误:预期类型 - eventDispatcher:(nonnull RCTEventDispatcher *)eventDispatcher;在 iOS 构建期间出现“未定义符号”错误

Posted

技术标签:

【中文标题】错误:预期类型 - eventDispatcher:(nonnull RCTEventDispatcher *)eventDispatcher;在 iOS 构建期间出现“未定义符号”错误【英文标题】:error: expected a type - eventDispatcher:(nonnull RCTEventDispatcher *)eventDispatcher; AND 'Undefined symbol' errors during iOS build 【发布时间】:2021-10-15 19:23:37 【问题描述】:

从 RN 版本 0.63.2 升级到 0.65.0-rc.3 后无法构建 ios 应用。我收到此错误:

在 /Users/.../ReactNativeProjects/.../node_modules/react-native-gesture-handler/ios/RNGestureHandlerManager.m:1 包含的文件中: /Users/.../ReactNativeProjects/.../node_modules/react-native-gesture-handler/ios/RNGestureHandlerManager.h:9:52:错误:预期类型 eventDispatcher:(nonnull RCTEventDispatcher *)eventDispatcher;

问题出在 RNGestureHandlerManager.h 中,在下面一行:

- (nonnull instancetype)initWithUIManager:(nonnull RCTUIManager *)uiManager
                          eventDispatcher:(nonnull RCTEventDispatcher *)eventDispatcher;

当我升级到 RNGestureHandler 版本 1.10.3 时,我收到以下错误:

未定义符号:OBJC_CLASS$_RCTScrollView

未定义符号:OBJC_METACLASS$_RCTViewManager

未定义符号:OBJC_CLASS$_RCTEventEmitter

未定义符号:__RCTNotImplementedException

未定义符号:_RCTGetUIManagerQueue

未定义符号:OBJC_CLASS$_RCTConvert

未定义符号:_RCTRegisterModule

未定义符号:_RCTDefaultLogFunction

未定义符号:OBJC_CLASS$_RCTRootView

未定义符号:OBJC_METACLASS$_RCTEventEmitter

未定义符号:OBJC_CLASS$_RCTTouchHandler

未定义符号:OBJC_CLASS$_RCTViewManager

未定义符号:__RCTLogNativeInternal

我在 github 页面上提交问题已经 3 天了,但团队没有回复。我真的很感激任何帮助。欢迎任何想法!这真的开始困扰我了。

这是我在 github 上创建的问题的链接:https://github.com/software-mansion/react-native-gesture-handler/issues/1543

非常感谢...

【问题讨论】:

【参考方案1】:

好的。经过几天的阅读/挖掘并尝试了许多不同的解决方案,这就是我修复它的方法。

1- 在RNGestureHandlerManager.h中添加了下面的import语句

#import <React/RCTEventDispatcher.h>

当我尝试重新构建应用程序时,这会产生相同的 Undefined symbol 错误,就像我将 RNGestureHandler 版本更新到 1.10.3 一样(请参阅问题中的红色错误消息)。

2- 这是关键部分。

我检查了主项目目标的Build Settings 下的“ONLY_ACTIVE_ARCH”设置。调试和发布模式都是“是”。

然后我检查了Pods 项目中RNGestureHandler 包的相同设置。就我而言,调试是 YES,发布是 NO。我试图在发布模式下构建应用程序,因此我将 RNGestureHandler 包的发布模式的此设置更改为 YES。

然后我尝试再次构建我的应用程序。这次 RNGestureHandler 包的Undefined symbol 错误消失了。类似的消息开始出现在其他包中。我对创建这些Undefined symbol 错误的所有包进行了相同的设置更新,最后,我的应用程序在发布模式下成功构建!希望这会有所帮助。

【讨论】:

【参考方案2】:

react-native-gesture-handled 库已升级并包含修复,因此升级库将修复它。

【讨论】:

这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review ...你显然不明白我的回答是一个答案....虽然我已经提到了上面的帖子...

以上是关于错误:预期类型 - eventDispatcher:(nonnull RCTEventDispatcher *)eventDispatcher;在 iOS 构建期间出现“未定义符号”错误的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点#three.js源码解读-EventDispatcher

注意:未定义的变量:eventDispatcher?

我收到错误错误类型参数一元减号和预期';'在 ':' 标记之前

失败/错误:需要'rspec/rails'类型错误:错误的参数类型类(预期模块)Rspec V3

如何纠正预期类型错误? [复制]

错误的预期参数类型