明確な答えを見つけることができなかった比較的単純な質問です。私のアプリはもっと複雑ですが、この質問に答えるだけで十分です。
ストップウォッチ アプリを作成しているとします。ユーザーが「開始」をタップすると、アプリは現在の日付と時刻を startTime に保存します。
startTime = [NSDate date];
ユーザーがテープを「停止」すると、アプリは現在の日付と時刻を stopTime に保存します。
stopTime = [NSDate date];
期間は次のように計算されます。
duration = [stopTime timeIntervalSinceDate:startTime];
次のように表示されます。
[durationLabel setText:[NSString stringWithFormat:@"%1.2f", duration]];
私のアプリがタイミングを計っている典型的な期間は、2 秒から 50 秒の範囲です。1/100 秒 (例: 2.86 秒) の精度が必要です。
iOSデバイスがクロックを正確に保つために使用するプロトコルがあると思います(セルラーまたはNTPソース?)。私の懸念は、ストップウォッチの開始と停止の間に、iOS デバイスの時計が更新され、現在の日付/時刻が前後にずれることがあります。これが発生した場合、計算された期間は不正確になります。
コードの効率を改善するためのタイミング メソッドに関する投稿をいくつか見てきました。私がよく知らない mach_time.h 関数の使用を提案する人もいます。どちらを使用するのが最善のアプローチであるかは、私には明らかではありません。
iOS の日付と時刻の更新を無効にすることはできますか? mach_absolute_time() は iOS クロックの更新の影響を受けませんか?
どうもありがとう!
ティム