问题描述
我正在尝试在Swift中创建一个React Native本机模块,该模块需要在主线程上运行,并将事件发送到JS。正常运行(如RN docs中的指示):
@objc(MyModule)
class MyModule: NSObject {
@objc
func methodQueue() -> dispatchQueue {
return dispatchQueue.main
}
}
发送事件的recommended way是扩展RCTEventEmitter
。在上述代码中将NSObject
更改为RCTEventEmitter
时,出现错误:
Method 'methodQueue()' with Objective-C selector 'methodQueue' conflicts with getter for 'methodQueue' from superclass 'RCTEventEmitter' with the same Objective-C selector
如何在扩展methodQueue
的同时覆盖RCTEventEmitter
的getter?还是有其他方法可以将事件发送给JS?
解决方法
您需要将其作为var getter覆盖:
@objc
override var methodQueue: DispatchQueue {
get {
return DispatchQueue.main
}
}