ios - 使用 RCT_EXPORT_METHOD 语法时如何修复 Xcode 上的 'Semicolon before method body is ignored' 错误?

标签 ios xcode react-native clang react-native-native-module

我正在将 React Native 集成到现有的 iOS/Android 项目中。我正在尝试制作一个 native 模块来帮助从 React Native 屏幕导航到 iOS 屏幕。我能够创建我的 Android Native 模块用于导航以从 React Native 调用 Android 事件。

在为 iOS 编写我的 Navigation Native 模块时,Xcode 一直在我的所有 RCT_EXPORT_METHOD() 方法中使用“忽略方法主体之前的分号”错误突出显示我的方法。

我正在使用 Xcode 9.2,React Native 0.59.3。

https://facebook.github.io/react-native/docs/native-modules-ios#docsNav

我一直在关注上面的文档,但我不明白为什么 Xcode 无法识别语法。 我也试过在 Xcode 9.4 中运行代码并得到相同的“忽略方法主体之前的分号”语法错误。

导航模块.h

#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>

@interface NavigationModule : NSObject <RCTBridgeModule>

@end

导航模块.m

#import "NavigationModule.h"

@implementation NavigationModule

RCT_EXPORT_MODULE(NavigationModule);

RCT_EXPORT_METHOD(onOptionAboutSelected:(NSString *)title)
{
    //TODO
}

RCT_EXPORT_METHOD(onOptionLockSelected)
{
    //TODO
}


@end

如有任何帮助,我们将不胜感激。

最佳答案

这是由 -Wsemicolon-before-method-body 编译器标记触发的,例如

- (void)foo;
{
// Method body
}

(注意 foo 后的分号。)

“正确”的修复方法是简单地删除分号:

- (void)foo
{
// Method body
}

但是,如果您不想或不能更改有问题的代码,您可以禁用警告:

  • 在build设置中将“方法主体前的分号”设置为NO

或者(如果你启用了类似-Weverything的功能)

  • -Wno-semicolon-before-method-body 添加到“其他警告标志”。

关于ios - 使用 RCT_EXPORT_METHOD 语法时如何修复 Xcode 上的 'Semicolon before method body is ignored' 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55733799/

相关文章:

ios - UILocalNotification 无法正常工作

iphone - 如何存储所有这些预先创建的数据?

reactjs - 语法错误: Unexpected token import with Jest

react-native - 无法确定包装器版本

ios - 为什么我在 Swift5 中收不到推送消息?

ios - 导航栏右栏按钮项不可见

ios - 我该如何解决 Could not cast value of type 'UINavigationController'

swift - 无法识别的字体系列 'FontAwesome5Free-Solid'

iphone - 自定义 NSSortDescriptors

ios - 在1个非 TableView Controller 中显示多个核心数据实体对象