【发布时间】:2020-06-04 15:23:39
【问题描述】:
我正在尝试从 Objective-C 调用一个方法,该方法已使用包含 Swift 函数的宏定义。当我尝试调用我的方法时,我在 Xcode 中收到编译错误No visible @interface for 'NearbyMessages' declares the selector '__rct_export__disconnect'。
我的 Swift 函数如下所示:
// SomeInterface.swift
@objc
func disconnect() -> Void {
// (disconnect logic here)
}
Objective-C 代码如下所示:
// SomeInterface.m
@interface RCT_EXTERN_REMAP_MODULE(SomeInterfaceNameJS, SomeInterfaceNamePrivate, NSObject)
RCT_EXTERN_METHOD(disconnect);
-(void) invalidate {
[self __rct_export__disconnect]; // No visible @interface for 'NearbyMessages' declares the selector '__rct_export__disconnect'
NSLog(@"GNM_BLE: invalidate!");
}
@end
宏 RCT_EXTERN_METHOD(来自 React 的 RCTBridgeModule.h)定义为:
#define RCT_EXTERN_METHOD(method) \
_RCT_EXTERN_REMAP_METHOD(, method, NO)
#define _RCT_EXTERN_REMAP_METHOD(js_name, method, is_blocking_synchronous_method) \
+ (const RCTMethodInfo *)RCT_CONCAT(__rct_export__, RCT_CONCAT(js_name, RCT_CONCAT(__LINE__, __COUNTER__))) { \
static RCTMethodInfo config = {#js_name, #method, is_blocking_synchronous_method}; \
return &config; \
}
通过阅读本文,编译后的方法应该被称为__rct_export__disconnect,对吧?
那么为什么不能使用[self __rct_export__disconnect] - 我还能怎么调用这个方法呢?
【问题讨论】:
标签: objective-c swift react-native native-module react-native-native-module