Timer.scheduledTimer は Swift 3 では動作しません 質問する

Timer.scheduledTimer は Swift 3 では動作しません 質問する

1.1 秒ごとにメソッドを呼び出したいのですfunc adjustmentBestSongBpmHeartRate()が、Timer を使用しましたが、機能しません。ドキュメントを読んで、多くのサンプル コードを見つけましたが、それでも機能します。何か見落としている点はありますか?

timer = Timer.scheduledTimer(timeInterval: 1.1, target: self, selector: #selector(self.adjustmentBestSongBpmHeartRate), userInfo: nil, repeats: false)
timer.fire()

func adjustmentBestSongBpmHeartRate() {
    print("frr")
}

ベストアンサー1

OperationQueue 操作でタイマーを作成しても機能しないことがわかりました。これは、runloop がないためだと思います。

したがって、次のコードで問題は解決しました。

DispatchQueue.main.async {
    // timer needs a runloop?
    self.timeoutTimer = Timer.scheduledTimer(timeInterval: self.timeout, target: self, selector: #selector(self.onTimeout(_:)), userInfo: nil, repeats: false)
}

おすすめ記事