如何在覆盖 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
}
}
我正在尝试在 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
}
}