gpt4 book ai didi

iphone - 如何使用 NSTimer

转载 作者:行者123 更新时间:2023-12-03 19:32:18 30 4
gpt4 key购买 nike

我在我的应用程序中使用了很多计时器。用于记录时间、移动物体、淡入淡出等。我在不同时间、同一 View 中使用同一个计时器来实现多个目的。我应该如何正确声明和无效或释放我的计时器?

Atm 我这样声明计时器:

fadeTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(bortInfo) userInfo:nil repeats:YES];

一旦我不使用它,我就会这样做:

[fadeTimer invalidate]; 
fadeTimer = nil;

每个计时器离开 View 时的保留计数均为 0。我也应该在释放中释放计时器吗?我的应用程序运行得很好,但有时会崩溃。

我用来更新时间标签的时钟定时器

[[NSRunLoop mainRunLoop] addTimer:clockTimer forMode:NSRunLoopCommonModes];

一旦我使时钟计时器无效,我需要对这个 mainLoop 执行任何操作吗?

总而言之,请支持我提供一些有关使用计时器的信息。

非常感谢!

乔金姆

最佳答案

您没有正确保留计时器 - 如果您想再次引用它们,您应该保留它们。我会用一个属性来做到这一点,即在你的头文件中

@property (nonatomic, retain) NSTimer *fadeTimer;

并将您的代码更改为

self.fadeTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(bortInfo) userInfo:nil repeats:YES];

// Put this whenever you want to remove your timer and in your dealloc method.
[fadeTimer invalidate];
self.fadeTimer = nil;

这将确保您的计时器被您的对象保留。否则,您只能希望计时器保持不变并且不会被 iPhone 自动释放。正如你所说,它偶尔会崩溃,这可能就是原因;)

恐怕我对运行循环了解不多,但很困惑为什么你不只使用普通的 NSTimer 来安排事情 - 为什么要费心与运行循环交互?

关于iphone - 如何使用 NSTimer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3439952/

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