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]; }