我正在定期向 RC 直升机发送数据,目前我正在使用时间间隔为 30 毫秒的 NSTimer 来执行此操作。现在由于 NSTimer 的不精确性和 ios 的非实时性,我与采样时间有很大的差异。(前 30 毫秒内有 5 个数据包,然后在 4 个周期内什么都没有)。是否有更精确的方法来处理 ios 中的数据采样和函数计时?
问问题
419 次
1 回答
1
你可以做一些你通常在游戏中做的事情来微调 fps(同时保持逻辑和绘画分开,使其在任何 fps 中都能正常工作)。像这样,并在后台线程中调用它:
- (void)updateLoop
{
NSTimeInterval last = CFAbsoluteTimeGetCurrent();
NSTimeInterval elapsed = 0;
while (self.running) {
NSTimeInterval now = CFAbsoluteTimeGetCurrent();
NSTimeInterval dt = now - last;
elapsed += dt;
if (elapsed >= YOUR_INTERVAL) {
//Do stuff
elapsed = 0;
}
last = now;
[NSThread sleepForTimeInterval:0.001]; //There is not NSThread yield
}
}
于 2013-01-03T17:47:03.830 回答