Posted at

NSTimerの基本的な使い方

More than 5 years have passed since last update.

NSTimerの基本的な使い方をさくっとまとめる

- (void)viewDidLoad

{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

timer_ = [NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(time:)
userInfo:nil
repeats:YES];
count = 0;
}

-(void)time:(NSTimer*)timer{
count += 0.1;
NSLog(@"time:%f", count);
//タイマーが有効かどうか
NSString *str = [timer_ isValid] ? @"yes" : @"no";
NSLog(@"isValid:%@", str);
}

これで0.1秒ずつカウントできる。

タイマーを停止したり、再開させる

- (IBAction)start:(id)sender {

//タイマーが動いていないときにタイマー開始
if (![timer_ isValid]) {
//[timer_ fire];
timer_ = [NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(time:)
userInfo:nil
repeats:YES];
}
}
- (IBAction)stop:(id)sender {
//タイマーが動いているときにタイマー停止
if ([timer_ isValid]) {
[timer_ invalidate];
}
}

タイマーを再開させる時に[timer_ fire]を使おうとしたが上手くいかなかった。
[timer invalidate]でtimer_インスタンスが無効になるためである。なのでもう一度インスタンス生成からやる必要がある。