【发布时间】:2012-08-17 18:50:35
【问题描述】:
我对 Objective-c 有点陌生。所以,如果我的问题或代码看起来很奇怪,那就可以解释原因。我有一个每 0.033 秒触发一次的 NSTimer。
timer = [NSTimer scheduledTimerWithTimeInterval:interval target:self selector:@selector(timerCallback) userInfo:nil repeats:YES];
选择器函数如下所示:
BOOL running = false;
- (void) timerCallback
{
if (running) {
return;
}
running = true;
//Do some stuff
running = false;
}
问题是,无论如何保持同步,都必须在这些时间间隔触发 timerCallback 函数。 (略过细节)
但是...事实证明,timerCallback 函数会导致 NSTimer 停止并等待它完成后再恢复?
我有什么选择来维持这个间隔? timerCallback 函数可以在单独的线程中执行吗?有比 NSTimer 更好的选择吗?也许是一个单独的线程开始?
【问题讨论】:
-
你的意思是定时器没有被重复调用?
-
如果您无法在您的计时器间隔内执行
timerCallback中的操作,那么您不会创建积压的“工作”,最终会给您带来问题吗? -
不,是的。我的意思是,如果 timerCallback 需要 0.1 秒,则 NSTimer 将停止,等待函数完成,然后恢复。结果,我失去了同步。我需要始终保持 0.033 秒的间隔。
-
@trojanfoe - 不,我跳过一两个 timerCallback 调用没有问题。但我真的需要保持间隔。比执行代码更重要。
-
如果 timerCallback 调度了一个新线程呢?然后在该线程中调用您的代码。
标签: iphone objective-c ios nstimer