我有一个程序,我想在其中编写一个计时器来检查用户是否空闲。为此我编写了以下代码:
if (!idleTimer) {
NSLog(@"make");
idleTimer=[[NSTimer alloc]initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:10.0]interval:10 target:self selector:@selector(idleTimerExceeded) userInfo:nil repeats:NO];
NSLog(@"madetimer with: %f, %@", idleTimer.timeInterval, idleTimer.fireDate);
}else {
NSLog(@"no reset timer: %f", idleTimer.timeInterval);
if (fabs([idleTimer.fireDate timeIntervalSinceNow]) < 9) {
NSLog(@"reset");
[idleTimer setFireDate:[NSDate dateWithTimeIntervalSinceNow:10]];
}
}
但不知何故,我的日志显示间隔始终为 0.0000 。这意味着这里出了问题。有人可以帮助我吗?
最佳答案
我从未见过如此复杂的计时器。试试这个:
编写一个方法来检查用户是否空闲(比如说idleChecker)
然后使计时器可重复并调用该方法idleChecker
[NSTimer scheduledTimerWithTimeInterval:.5 target:self selector:@selector(idleChecker) userInfo:nil repeats:YES];
记得在.h文件中声明idleChecker方法
请注意,如果您想停止计时器事件,那么您需要维护对其的引用
NSTimer aTimer = [NSTimer scheduledTimerWithTimeInterval:.5 target:self selector:@selector(idleChecker) userInfo:nil repeats:YES];
然后停止它
[aTimer invalidate];
至于检查其是否正在运行,我只需在其中粘贴一条 nslog 消息,说明“检查空闲用户”之类的内容
关于iphone - NSTimer 未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8620374/