私はタイマーを設定して、それぞれが完了するとコードを実行します。しかし、NSTimerのタイミングは完全に正確ではないようですが、しばらくするとタイマーは少し早く終了するようです。NSTimerが正確ではありません
私は偏差をテストするために以下を設定しました。
(スタートボタンにストーリーボードに行われ、リンクされている。)
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var startButton: UIButton!
//var mainTimer: NSTimer!
var counter: NSTimeInterval = 0.0
@IBAction func startButtonPressed(sender: AnyObject) {
startMainTimer()
startTimers()
}
func startMainTimer() {
let mainTimer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: #selector(ViewController.count), userInfo: nil, repeats: true)
NSRunLoop.mainRunLoop().addTimer(mainTimer, forMode: NSRunLoopCommonModes)
}
func count() {
counter += 0.01
}
func startTimers() {
var lastTimeInterval: NSTimeInterval = 0.0
for _ in 0..<50 {
let timeInterval = lastTimeInterval + 1.0
lastTimeInterval = timeInterval
// Not setting up a repeating timer as intervals would be different in my original project where the deviation will be even worse.
let timer = NSTimer.scheduledTimerWithTimeInterval(timeInterval, target: self, selector: #selector(ViewController.printTime), userInfo: nil, repeats: false)
NSRunLoop.mainRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes)
}
}
func printTime() {
print(counter)
}
}
しばらくして、タイマーは、第二のまたはそれ以上の初期の第十のであろう。 タイミングを改善するためにNSDateを使用する必要がありますか、それとも複雑すぎるのでしょうか?上記のNSDateの外観はどうですか?
大変助かりました!
NSTimerのドキュメントを見てください:* "タイマーの時間間隔の実効分解能は、50-100ミリ秒のオーダーに制限されています。" * - http://stackoverflow.com参照/ questions/31375361/format-realtime-stopwatch-timer-to-thethth-for-swiftの代わりに –