gpt4 book ai didi

iphone - 如何在这个简单的 while 循环中使用 NSTimer?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:49:17 26 4
gpt4 key购买 nike

我有一个 -(void) 方法正在执行,有一次它进入一个 while 循环,在它要求它们的那一刻直接从加速度计获取值

我浏览了有关 NSTimer 类的文档,但我无法理解在我的案例中我应该如何使用这个对象:

例如

-(void) play
{
......
...



if(accelerationOnYaxis >0 && accelerationOnYaxis < 0.9 )
{
startTimer;
}

while(accelerationOnYaxis >0 && accelerationOnYaxis < 0.9)
{
if(checkTimer >= 300msec)
{

printOut_AccelerationStayedBetweenThoseTwoValuesForAtLeast300msecs;
break_Out_Of_This_Loop;
}

}

stopTimerAndReSetTimerToZero;

.....
more code...
....
...
}

有什么帮助吗?

最佳答案

你不能用 NSTimer 来做,因为它需要您的代码退出才能触发。 NSTimer使用事件循环来决定何时给你回电话;如果您的程序在其 while 中拥有控制权循环,计时器无法触发,因为永远不会到达检查是否到了触发时间的代码。

最重要的是,在繁忙的循环中停留近 1.5 秒会耗尽电池电量。如果您只需要等待 1.4s , 你最好调用 sleepForTimeInterval: ,像这样:

[NSThread sleepForTimeInterval:1.4];

您还可以使用 clock() 来自 <time.h>测量短时间间隔,像这样:

clock_t start = clock();
clock_t end = start + (3*CLOCKS_PER_SEC)/10; // 300 ms == 3/10 s
while(accelerationOnYaxis >0 && accelerationOnYaxis < 0.9)
{
if(clock() >= end)
{
printOut_AccelerationStayedBetweenThoseTwoValuesForAtLeast300msecs;
break_Out_Of_This_Loop;
}

}

关于iphone - 如何在这个简单的 while 循环中使用 NSTimer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11728570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com