3

我不想设置一个在经过一定时间后“触发”(并做某事)的计时器。

因此,我对NSTimer类及其方法不感兴趣。

我感兴趣的只是计算经过的时间while,例如,一些 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

你的第二种方法是正确的。将当前日期保存在NSDate对象中并用于timeIntervalSinceDate:获取从那时起经过的时间。结果将NSTimeInterval是浮点数类型。它以秒为单位指定时间差,但由于它是一个浮点数,它也可以存储几分之一秒。

NSTimeInterval 总是以秒为单位指定;它在 10,000 年的范围内产生亚毫秒精度。

于 2012-09-22T18:04:58.693 回答