我正在设置一个计时器,以每隔13分钟触发一次。但是计时器似乎不定期触发。这是一个间歇性问题。一些用户报告了该问题,但我无法重现该问题。
- (void)resetIdleTimer
{
if (_idleTimer)
{
[_idleTimer invalidate];
[_idleTimer release];
_idleTimer = nil;
}
_idleTimer = [[NSTimer scheduledTimerWithTimeInterval:13*60.0
target:self
selector:@selector(idleTimerExceeded)
userInfo:nil
repeats:NO] retain];
}
- (void)idleTimerExceeded
{
// do some processing
[_idleTimer release];
_idleTimer = nil;
}
根据某些条件,计时器将被重置(resetIdleTimer),但是无论如何,这将重置计时器13分钟。
当我查看代码时,只能看到没有将计时器参数传递给选择器的问题。我不确定这是否是此问题的原因吗?有谁遇到过这种怪异现象? (任何我将如何更新代码以将timer作为参数)。
一位用户报告说,它只是在4分钟后发生的。
最佳答案
让我们确认一件事,不将计时器参数传递给选择器不会导致任何问题。
这是更新的代码,可以正常工作
@property(nonatomic,strong)NSTimer *myTimer;
要么
@property(nonatomic,retain)NSTimer *myTimer;
方法
- (void)resetIdleTimer
{
if ([self.myTimer isValid])
[self.myTimer invalidate];
self.myTimer = [NSTimer scheduledTimerWithTimeInterval:13*60.0
target:self
selector:@selector(idleTimerExceeded)
userInfo:nil
repeats:NO];
}
- (void)idleTimerExceeded
{
NSLog(@"tiggered");
}