React Native 错误 No visible @interface for 'MyModule' declares the selector 'sendEventWithName:body:'
问题描述
在 iOS 项目使用 Objective C 自定义一个 native 原生模块,使用 sendEventWithName 发送一个事件到 Javascript 模块。
// MyModule.h
#import <React/RCTBridgeModule.h>
@interface MyModule : NSObject <RCTBridgeModule>
@end// MyModule.m
#import "MyModule.h"
@implementation MyModule
RCT_EXPORT_MODULE();
- (NSArray<NSString *> *)supportedEvents
{
return @[@"EventReminder"];
}
- (void)calendarEventReminderReceived:(NSNotification *)notification
{
NSString *eventName = notification.userInfo[@"name"];
[self sendEventWithName:@"EventReminder" body:@{@"name": eventName}];
}
@endXcode报了一个错误。
No visible @interface for 'MyModule' declares the selector 'sendEventWithName:body:'解决方法
sendEventWithName 是 RCTEventEmitter 类的方法,MyModule.h 需要继承RCTEventEmitter ,而不是 NSObject。
// MyModule.h
#import <React/RCTBridgeModule.h>
#import <React/RCTEventEmitter.h>
@interface MyModule : RCTEventEmitter <RCTBridgeModule>
@end