gpt4 book ai didi

iphone - NSTimer 有时会在解雇日期之前被解雇?

转载 作者:行者123 更新时间:2023-12-03 17:54:39 25 4
gpt4 key购买 nike

我正在设置一个计时器,以 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 分钟。

当我查看代码时,我只能看到没有将计时器参数传递给选择器的问题。我不确定这是否是这个问题的原因?有人遇到过这种奇怪的现象吗? (无论如何,我将更新代码以将计时器作为参数)。一位用户报告说,这件事在 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");
}

关于iphone - NSTimer 有时会在解雇日期之前被解雇?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15427195/

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