kade

技術系の記事を書いていきます。

Objective-C: 実行を遅延させる

Objective-CにもJSのsetTimeout的なものがもちろんあります。

2種類あり、

[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(hoge:) userInfo:nil repeats:YES];

繰り返しのある処理はこちらの方が便利な感じですが、引数を渡す時にNSDictionary型で渡さなきゃいけません。

引数を取りたい場合は下記の方が使いやすいです。

[self performSelector:@selector(hoge:) withObject:[NSNumber numberWithInteger:1] afterDelay:1.0];

使い分けてます。

【追記】

それぞれには実行のキャンセルがあります。

NSTimerの場合

NSTimer* hogeTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(hoge:) userInfo:nil repeats:YES];
[hogeTimer invalidate];

NSTimerを個別に停止することが出来ます。

performSelectorの場合

  [NSObject cancelPreviousPerformRequestsWithTarget:self];

これでこれを呼ぶ以前のものが全てキャンセルされます。

Objective-Cの絵本 (絵本シリーズ)

Objective-Cの絵本 (絵本シリーズ)