gpt4 book ai didi

iphone - NSTimer 在我第一次告诉它停止时停止,然后拒绝停止

转载 作者:行者123 更新时间:2023-11-28 18:14:38 25 4
gpt4 key购买 nike

我在我的 UIViewController header 中声明了一个 NSTimer:

NSTimer *mainTimer;

我在实现中的 viewWillAppear 方法中启动它,所以:

mainTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateAll) userInfo:nil repeats:YES];

我有一个名为 showInfo 的翻转 View 的按钮(标准实用程序应用程序模板),它有以下命令:

[mainTimer invalidate];

当我的应用程序启动时,计时器启动并执行它。我第一次点击该按钮并且 View 翻转时,计时器停止。当我完成 flipSideViewController 并且主视图重新出现时,计时器再次启动。到目前为止,很好。问题是随后的按钮按下(因此调用 [mainTimer invalidate] 不会使计时器停止。它只是继续前进。我可以随心所欲地来回翻转并继续更新. 对于 grins,我连续调用了两个 invalidate 调用,但它崩溃了。

更新:

发现问题。从 flipSideViewController 返回后,我自己调用了 viewWillAppear,这将创建计时器。运行循环还自动调用 viewWillAppear,因此创建了第二个计时器。这只发生在我访问过反面一次之后,所以当我第一次翻转时计时器(单个实例)会正常停止。奇怪的是我可以创建两个具有相同名称的计时器......

最佳答案

一旦定时器失效,它就不会再触发。

因此,如果“计时器继续运行”,那么它就是一个不同的计时器。确保你是在对着你认为自己是的个体说话。我已经看到很多错误,其中开发人员分配/初始化一个实例,然后加载一个 NIB 并导致特定类的不同实例发挥作用。我可以在这里看到类似的事情发生。

请注意,不可能在作为计时器目标的对象的 dealloc 中使计时器无效。计时器将保留目标,因此无法在首先失效的计时器内 [正确] 释放目标。

关于iphone - NSTimer 在我第一次告诉它停止时停止,然后拒绝停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4818703/

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