【Objective-C】コピペOK!NSTimerでsetTimeoutを実行する

Objective-C

こんにちは、カミ@god48_です。

今回は、プログラミングでよく使うTimer機能を使って、「◯秒後に処理を行う」という実装を行います。
「setTimeout」はJavaScriptでよく使うTimer機能の代表の一つです。

※JavaScriptのTimer機能のsettimeout方法

NSTimerでタイマー(setTimeout)を実行方法

それでは本題のObjective-CのTimerを使っていきます。

Objective-CでTimerを使うには「NSTimer」オブジェクトを使います。
NSTimerは非常に簡単な実装ができます。

コピペで使うこともできますよ。

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0f
                                               target:self
                                               selector:@selector(setTimeout:)
                                               userInfo:nil
                                                repeats:NO];

NSTimerの引数

引数名引数の役割
scheduledTimerWithTimeIntervalタイマーの感覚
targetタイマー発生時に呼び出すメソッドがあるターゲット
selectorタイマー発生時に呼び出すメソッド名
userInfoselectorで呼び出すメソッドに渡す情報
repeatsタイマーの実行を繰り返しの有無

selector:@selector「関数名」でタイマーで呼び出したいメソッドをを呼び出せます。
タイマーで呼び出したいメソッドはクラス内に記述してください。

スポンサードサーチ

NSTimerでタイマー(setTimeout)を実行

@implementation ViewController

  // 省略

- (void)viewDidLoad {
    NSLog(@"viewDidLoad");

  NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0f
                                               target:self
                                               selector:@selector(setTimeout:)
                                               userInfo:nil
                                                repeats:NO];
}

- (void)setTimeout:(NSTimer*)timer {
    // タイマーをストップ
    [timer invalidate];
    // 1秒後に実行したい処理
    NSLog(@"タイマー実行");
}
   
  scheduledTimerWithTimeInterval:秒数
   

scheduledTimerWithTimeInterval:秒数で実行したい秒数感覚を指定して「selector:@selecto(メソッド)」でタイマーが動きます。

NSTimerメソッド

NSTimerメソッド中に複数のタイマーに関数のメソッドがあります。

タイマーを停止

  
 [timer invalidate];
 

よく使うケースは呼び出したいメソッドが飛ばれた直後にタイマーを止めます。

 
   - (void)setTimeout:(NSTimer*)timer {
    // タイマーをストップ
    [timer invalidate];
  

    // 3秒後に実行したい処理
    NSLog(@"タイマー実行");
  
   }

タイマーが有効

  
 [timer isValid];
 

Timerの有効、無効の判定で処理を行うことができます。
[timer isValid]を使うことで「Timer」の開始、停止を繰り返し使うこともできます。

  
  // タイマーが有効だったら処理
  if ([timer isValid]) {

    
    NSLog(@"timer true");


  }

タイマーを開始

[timer isValid]で判定を条件に処理を行うことができます。

例えばですが、タイマーが有効であれば、アラームをセットするなですね。

   
 [timer fier];
  

Timerの有効、無効の判定で処理を行うことができます。
[timer isValid]を使うことで「Timer」の開始、停止を繰り返し使うこともできます。

  // タイマーが無効だったら処理
  if (![timer isValid]) {

     [timer fier];
    
    NSLog(@"timer start");


  }

Objective-CObjective-C

Posted by kami