3

一定の時間が経過した後に「起動」する(そして何かをする)タイマーを設定したくありません。

したがって、私はNSTimerクラスとそのメソッドには興味がありません。

私が興味を持っているのは、たとえば、いくつかのwhileループが実行されている間に経過する時間をカウントすることだけです。私は次のように使うことができますNSDate

NSDate currentDate = [[NSDate alloc] init];

while(someConditionIsTrue)
{
    // executing..
}

timeElapsed = [self timeIntervalSinceDate:currentDate];

NSLog(@"time elapsed was: %i", timeElapsed);

しかし、私が正しく理解していれば、timeIntervalSinceDate:数秒しか数えられません。

通過する時間をミリ秒単位で数える方法はありますか?

言い換えれば、私が通過時間を数えることができる最小の単位は何ですか、そしてどのように?

4

2 に答える 2

10

CFAbsoluteTimeGetCurrent()を見てください

CFAbsoluteTime before = CFAbsoluteTimeGetCurrent();
CFAbsoluteTime after = CFAbsoluteTimeGetCurrent();
于 2012-09-22T18:05:47.127 に答える
7

2番目のアプローチは正しいです。現在の日付をNSDateオブジェクトに保存しtimeIntervalSinceDate:、それ以降の経過時間を取得するために使用します。NSTimeInterval結果は、浮動小数点数のタイプになります。時間差を秒単位で指定しますが、浮動小数点数であるため、秒の小数部も格納できます。

NSTimeIntervalは常に秒単位で指定されます。10、000年の範囲でサブミリ秒の精度が得られます。

于 2012-09-22T18:04:58.693 に答える