48

可能重复:
NSTimer 不会停止

在我的应用程序中,我使用 NStimer 每 3 秒调用一次动画函数。我想停止这个计时器并在计时器仍在运行时调用另一个事件。这可能吗?

4

2 回答 2

106
@interface
    NSTimer *autoTimer;

@implementation

// Start timer
    autoTimer = [NSTimer scheduledTimerWithTimeInterval:(3.0)
        target:self 
        selector:@selector(autoTimerFired:) 
        userInfo:nil 
        repeats:YES];

// Stop timer:
    [autoTimer invalidate];
    autoTimer = nil;
于 2009-09-15T21:27:21.550 回答
43

首先,您要保留指向计时器的指针

self.packetTimer = [NSTimer timerWithTimeInterval:CONNECTION_TIMEOUT target:self selector:@selector(connectionTimeout:) userInfo:nil repeats:NO];
[[NSRunLoop currentRunLoop] addTimer:packetTimer forMode:NSDefaultRunLoopMode];

如果您想在代码中的其他地方取消它,只需调用:

[self.packetTimer invalidate];
self.packetTimer = nil;
于 2009-09-15T21:15:11.660 回答