【Objective-C】NSTimerを使って○秒後に指定した処理を実行する

Objective-C で開発中のアプリに、○秒後に特定の処理をする、という処理を追加したので、実装手順をまとめ。
時間の測定には NSTimer を使い、指定した秒数が経過したら特定の処理を実行するようにしています。

NSTimer の使い方について、参考にさせていただいた記事はこちらから。

【Obj-C】NSTimer (タイマー)の使用方法
https://blog.77jp.net/nstimer-タイマーの使用方法-iphone-ios-逆引き-サンプル

 

記述方法は下記の通りです。
タイマーを開始したいタイミングで下記を指定します。
なお、[timer fire]; を指定しなくても、自動で開始しますのでご注意ください。

NSTimer timer = [NSTimer scheduledTimerWithTimeInterval:30.0f
                                                 target:self
                                               selector:@selector(doTask:)
                                               userInfo:nil
                                                repeats:NO];

なお、上記のコードでは、タイマーの測定時間は 30秒後で、繰り返し実行は無効=1回のみ にしています。

そして、selector で指定した関数内に、30秒後に実行したい処理を記述します。

-(void)doTask:(NSTimer*)timer {
    // タイマーを停止
    [timer invalidate];
    // 30秒後に実行したい処理
}

追加する記述は以上です。
実際に実機やシュミレーターで動作確認したところ、問題なく 30秒後に doTask が実行されました!

なお、もしリピートを有効にした場合は、タイマーが不要になった時 [timer invalidate]; を使ってタイマーを停止するのをお忘れなく。
私はリピート無効にしましたが、念のため doTask 内でタイマーを停止しています。
また、タイマーを再度開始したい場合は、 [timer fire]; を実行してください。

 

以上、Objective-C の NSTimer を使って○秒後に指定した処理を実行する方法でした。
ご参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG