Objective c 为什么我必须为swift桥接函数的react本机设置第二个参数的标签

Objective c 为什么我必须为swift桥接函数的react本机设置第二个参数的标签,objective-c,swift,react-native,Objective C,Swift,React Native,假设我有以下Swift课程: @objc(ExampleClass) class ExampleClass: NSObject { init() {} @objc func exampleMethod(_ message: String, _ properties: [String: Any]? = nil) -> Void {} } 以及以下标题: #import <Foundation/Foundation.h> #import <React/RCTBr

假设我有以下Swift课程:

@objc(ExampleClass)
  class ExampleClass: NSObject {
  init() {}
  @objc func exampleMethod(_ message: String, _ properties: [String: Any]? = nil) -> Void {}
}
以及以下标题:

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

@interface RCT_EXTERN_MODULE(ExampleClass, NSObject)

RCT_EXTERN_METHOD(exampleMethod:(NSString *)name (NSDictionary *)properties)
@end
这将导致以下错误消息:

ExceptionsManager.js:73 Exception 'exampleMethod: is not a recognized Objective-C method.' was thrown while invoking trackEvent on target SegmentTracker with params (
    "example",
        {
        hello = world;
    }
)
但是,如果我将函数签名更改为这样标记:

@objc func exampleMethod(_ message: String, withProperties properties: [String: Any]? = nil) -> Void {}
    }
并调整RCT_EXTERN_METHOD函数,如下所示:

RCT_EXTERN_METHOD(exampleMethod:(NSString *)name withProperties:(NSDictionary *)properties)

为什么必须给第二个论点贴上标签?第一个为什么不呢?

我对Swift不是很熟悉,也不知道React Native的任何内容,但是您是否尝试了
RCT\u外部方法(exampleMethod:(NSString*)name:(NSDictionary*)properties)
?Objective-C方法是
exampleMethod::
。OOOOO我完全误解了Objective-C语法!谢谢如果你想写下来,顺便说一句,我很乐意接受你的回答
RCT_EXTERN_METHOD(exampleMethod:(NSString *)name withProperties:(NSDictionary *)properties)