Как расширить RCTEventEmitter при переопределении метода получения очереди?

#swift #react-native #react-native-native-module

#swift #react-native #реагировать-родной-родной-модуль

Вопрос:

Я пытаюсь создать собственный модуль React Native в Swift, который необходимо запускать в основном потоке и который отправляет события в 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
  

Как я могу переопределить средство methodQueue получения при одновременном расширении RCTEventEmitter ? Или есть какой-то другой способ отправки событий в JS?

Ответ №1:

Вам нужно переопределить его как средство получения var:

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