Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在iOS中如何计算时间?_Objective C_Ios_Nsdate_Nstimer_Nstimeinterval - Fatal编程技术网

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();