1

iOS アプリで繰り返し実行されるコードには、次のものがあります。

// int timeStampMilliseconds = (ceil([[NSDate date] timeIntervalSince1970] * 1000.0));
// double timeStampMilliseconds = [[NSDate date] timeIntervalSince1970] * 1000.0;
// double timeStampMilliseconds = CACurrentMediaTime() * 1000;
double timeStampMilliseconds = CFAbsoluteTimeGetCurrent() * 1000.0;
double hours = fmodf(timeStampMilliseconds, 86400000) / 3600000.0;
double minutes = fmodf(timeStampMilliseconds, 3600000) / 60000.0;
double seconds = fmodf(timeStampMilliseconds, 60000) / 1000.0;
NSLog(@"Milliseconds: %lf, Hours: %lf, minutes: %lf, seconds: %lf", timeStampMilliseconds, hours, minutes, seconds);

時間を取得するために私が知っている 3 つの方法は[NSDate date] timeIntervalSince1970、、、CACurrentMediaTime()およびCFAbsoluteTimeGetCurrent()

それらを実行すると、timeIntervalSince1970 と CFAbsoluteTimeGetCurrent は UTC 時刻を数秒以内に取得します...しかし奇妙なことに、ログ ステートメントに到達すると、ミリ秒は適切な速度で上昇しますが、時間、分、秒はその時点で固定されます。彼らは始められました。時計の針が動かない。

CACurrentMediaTime は、予想以上のものを表示します。時間マーカーからの経過時間を正確に示します。つまり、秒、分、時間のすべてが増加します。

イニシャライザで定数を TimeIntervalSince1970 から CACurrentMediaTime を引いた値に初期化し、引用されたコードで保存された定数と CACurrentMediaTime を追加する回避策を講じることができると思います。しかし、私は何が起こっているのか、そしてその理由を知りたい.

ありがとう、

4

1 に答える 1