読者です 読者をやめる 読者になる 読者になる

ARC環境におけるNSTimerの再利用(再起動)

NSTimerは -invalidate メソッドをコールするとARCによって回収されてしまう。
なので、再起動のためには再度タイマーの内容を決定してやる必要がある。


具体的な方法を示す。

適当なところで、NSTimer *timerのインスタンスを確保しておく。
そして、以下のようにメソッドを実装。

タイマーを起動するときは -startUpdate、タイマーを終了するときは -stopUpdateを呼んでやれば良い。

-(void)update:(NSTimer*)currentTimer
{
     // update
}


-(void)startUpdate
{
    timer = nil;
    timer = [NSTimer scheduledTimerWithTimeInterval:1.0f/60.0f
                                                                      target:self
                                                                   selector:@selector(update:)
                                                                   userInfo:nil
                                                                    repeats:YES];
    [timer fire];
}
-(void)stopUpdate
{
    [timer invalidate];
}