Objective c 在iOS中如何计算时间?
我不想设置一个计时器,在经过一定时间后“启动”(并执行某些操作) 因此,我对Objective c 在iOS中如何计算时间?,objective-c,ios,nsdate,nstimer,nstimeinterval,Objective C,Ios,Nsdate,Nstimer,Nstimeinterval,我不想设置一个计时器,在经过一定时间后“启动”(并执行某些操作) 因此,我对NSTimer类及其方法不感兴趣 我感兴趣的是计算经过的时间,例如,一些while循环正在执行。我可以使用NSDate如下: NSDate currentDate = [[NSDate alloc] init]; while(someConditionIsTrue) { // executing.. } timeElapsed = [self timeIntervalSinceDate:currentDate
NSTimer
类及其方法不感兴趣
我感兴趣的是计算经过的时间,例如,一些while循环正在执行。我可以使用NSDate
如下:
NSDate currentDate = [[NSDate alloc] init];
while(someConditionIsTrue)
{
// executing..
}
timeElapsed = [self timeIntervalSinceDate:currentDate];
NSLog(@"time elapsed was: %i", timeElapsed);
但是,如果我理解正确,timeIntervalSinceDate:
只能计算秒数
有没有办法让我以毫秒为单位计算经过的时间
换句话说,我能计算的最小时间单位是多少?如何计算?你的第二种方法是正确的。将当前日期保存在
NSDate
对象中,并使用timeintervalncedate:
获取此后经过的时间。结果的类型为NSTimeInterval
,它是一个浮点数。它以秒为单位指定时间差,但由于它是一个浮点数,所以它也可以存储秒的分数
NSTimeInterval始终以秒为单位指定;它产生
超过10000年的亚毫秒精度
看
如果你正在寻找一种简单的方法来计时你的代码,这可能是你想要的。它是秒数,但它是浮点数,所以你得到的有效时间是毫秒。在格式字符串中使用
%f
。最好执行两次[NSDate timeintervalncedate]
,一次在开始时,一次在完成时,然后从第二个值中减去第一个值。不会不必要地创建NSDate对象。我没有意识到它会返回一个浮点数。谢谢对于这样的情况,这似乎更简单,虽然NSDate
将起作用,但实际上,[NSDate timeintervalncereferencedate]
可能直接映射到CFAbsoluteTimeGetCurrent,因为它们返回相同的值。
CFAbsoluteTime before = CFAbsoluteTimeGetCurrent();
CFAbsoluteTime after = CFAbsoluteTimeGetCurrent();