如何在覆盖 methodQueue getter 的同时扩展 RCTEventEmitter?

How to extend RCTEventEmitter while overriding methodQueue getter?

我正在尝试在 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

如何在扩展 RCTEventEmitter 的同时覆盖 methodQueue getter?或者有其他方法可以将事件发送到 JS 吗?

您需要将其重写为 var getter:

  @objc
  override var methodQueue: DispatchQueue {
    get {
      return DispatchQueue.main
    }
  }