0
、私はいくつかの迅速なコードにstart
メソッドを呼んでいるネイティブ反応し、ネイティブコンポーネントでは動作しませんタイマーは、私はJavaScriptで
import Foundation
@objc(MyTestClass)
class MyTestClass: RCTEventEmitter {
let testEventName = "testEvent"
override func supportedEvents() -> [String]! {
return [testEventName]
}
@objc func start() -> Void {
let timer = Timer.scheduledTimer(
timeInterval: 0.1,
target: self,
selector: #selector(self.update),
userInfo: nil,
repeats: true)
RunLoop.main.add(timer, forMode: RunLoopMode.commonModes)
}
@objc func update() {
print("test")
self.sendToJs(message: "test")
}
@objc private func sendToJs(message: String) -> Void {
self.sendEvent(withName: testEventName, body: message)
}
}
を...タイマーを起動し、この例では、同じメッセージをJavaScriptコードに繰り返し送信し、イベントをリッスンします。
問題:this answerに概説され、メイン実行ループにタイマーを追加する場合でも、update
メソッドが呼び出されることはありません。
私はここで簡単に間違いをしていますか?私は迅速にすごいです。
もしそうでなければ、私はタイマーをJSに移動し、データのスウィフトコードを繰り返し呼び出す必要があります。私の実際のシナリオでは、データを返すタイマーは条件付きですから私はそれがあまりにも悪くないと思う...
してみてください。 – ebby94
@ ebby94を実行します。私は 'update'の中でブレークポイントを打った後、JSにメッセージを送りますが、ええ..一度だけ。 –