我正试图在Swift中创建一个React Native本机模块,该模块需要在主线程上运行,并将事件发送到JS。这很好(按照RN文档中的说明(:
@objc(MyModule)
class MyModule: NSObject {
@objc
func methodQueue() -> DispatchQueue {
return DispatchQueue.main
}
}
推荐的发送事件的方式是扩展RCTEventEmitter
。当我在上面的代码中将NSObject
更改为RCTEventEmitter
时,我得到错误:
Method 'methodQueue()' with Objective-C selector 'methodQueue' conflicts with getter for 'methodQueue' from superclass 'RCTEventEmitter' with the same Objective-C selector
如何在扩展RCTEventEmitter
的同时覆盖methodQueue
getter?或者有其他方式将事件发送到JS吗?
您需要将其重写为var getter:
@objc
override var methodQueue: DispatchQueue {
get {
return DispatchQueue.main
}
}