web-dev-qa-db-ja.com

NStimerイベントを停止する方法は?

可能性のある複製:
NSTimerは停止しません

私のアプリケーションでは、NStimerを使用して3秒ごとにアニメーション関数を呼び出しています。このタイマーを停止し、タイマーの実行中に別のイベントを呼び出したい。これは可能ですか?

47
Mansi
@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;
103
zaph

まず、タイマーへのポインターを保持したい

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;
43
coneybeare