gpt4 book ai didi

iphone - 如何检查NSTimer是否已经自动失效?

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

我在创建不重复的 NSTimer 时遇到问题。

假设我创建一个新实例

timer = [NSTimer ScheduledTimerWithTimeInterval:3.0 target:self 选择器:@selector(updateSystems) userInfo:nil 重复:NO];

在我的代码中的某个地方。

如果我按下 iPhone 上的主页按钮,我的应用程序将进入后台状态,并且计时器仍然存在,只是暂停。所以在我的 applicationDidEnterBackground 方法中我说

if(timer.isValid == YES)
{
[timer invalidate];
timer = nil;
}

如果我在计时器完成后按主页按钮,就会出现问题。然后计时器已经被释放,导致尝试访问 isValid 时崩溃。

尝试

if(timer != nil) 
{
[timer invalidate];
timer = nil;
}

导致同样的崩溃,因为 Cocoa 的自动失效似乎没有将计时器设置为nil

如何检查定时器是否自动失效?

谢谢。

注意:我需要这样做的原因是因为我正在向网络服务发送请求,一旦请求成功(或失败),我就会启动一个计时器,一旦触发它就会发送一个新请求。如果我没有在计时器完成之前使计时器失效,则会创建多个计时器(因为我正在 applicationDidBecomeActive 上发出新请求),从而在只需要一个计时器时发出多个请求。

最佳答案

您需要自己保留计时器,以保证它在触发后仍然存在。 scheduledTimerWithTimeInterval 返回一个不属于您的自动释放实例。

关于iphone - 如何检查NSTimer是否已经自动失效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6744511/

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