如何使用NSTimer

Joa*_*son 3 iphone xcode nstimer ipad

我在我的应用程序中使用了很多计时器.对于录制时间,移动物体,褪色等我在不同时间在同一视图中使用相同的计时器.我应该如何正确地宣布和宣布我的计时器?

Atm Im宣布这样的计时器:

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

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

[fadeTimer invalidate]; 
fadeTimer = nil;
Run Code Online (Sandbox Code Playgroud)

我离开视图时的保留计数在每个计时器上为0.我应该在dealloc中释放计时器吗?我的应用程序运行得非常好,但有时会崩溃.

我用来更新标签的clockTimer使用时间

[[NSRunLoop mainRunLoop] addTimer:clockTimer forMode:NSRunLoopCommonModes];
Run Code Online (Sandbox Code Playgroud)

一旦我使clockTimer无效,我是否需要对此mainLoop做任何事情?

总而言之,请向我提供有关与计时器合作的一些信息.

非常感谢你!

乔金 -

dea*_*rne 7

你没有正确地保留你的计时器 - 如果你想再次参考它们,你应该保留它们.我会使用属性(即头文件中)执行此操作

@property (nonatomic, retain) NSTimer *fadeTimer;
Run Code Online (Sandbox Code Playgroud)

并改变你的代码说

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;
Run Code Online (Sandbox Code Playgroud)

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

我担心我对运行循环知之甚少,但我很困惑为什么你不只是使用法线NSTimer来安排事情 - 为什么还要干扰与运行循环的交互呢?