[XCODE] Objective-CでJavaScriptのsetIntervalやsetTimeoutを実現する方法
こんにちは、@yoheiMuneです。
今日はObjective-Cで、JavaScriptのsetIntervalやsetTimeoutのような機能を実装する方法を記載したいと思います。
以下のように実装します。
また呼び出しを中止する場合には、NSTimer#invalidateを呼び出します。
- NSTimer Class Reference
- NSRunLoop Class Reference
簡単なTipsですが、どなたかの役に立てば幸いです。
最後までご覧頂きましてありがとうございました。
今日はObjective-Cで、JavaScriptのsetIntervalやsetTimeoutのような機能を実装する方法を記載したいと思います。
Objective-CでJSのsetTimeoutを実現する
Objective-CでsetTimeoutを実現するには、以下のように実装します。- (void)viewDidLoad { // NSTimerのインスタンスを作成する。 // Tintervalに何秒後かを指定し、targetとselectorに発火させるメソッドを指定します。 // aTimerは、NSTimer型の変数 aTimer = [NSTimer timerWithTimeInterval:3 target:self selector:@selector(showInformation) userInfo:nil repeats:NO]; // Timerを設定します。 [[NSRunLoop mainRunLoop] addTimer:aTimer forMode:NSDefaultRunLoopMode]; } // NSTimerから呼び出されるメソッド -(void) showInformation { NSLog(@"showInformation is called."); }NSTimerとNSRunLoopを使って、指定秒後にメソッドを呼び出すことができます。
Objective-CでJavaScriptのsetIntervalを実現する
続いて、Objective-CでJavaScriptのsetIntervalを実現する方法です。以下のように実装します。
- (void)viewDidLoad { // NSTimerのインスタンスを作成する。 // Tintervalに何秒後かを指定し、targetとselectorに発火させるメソッドを指定します。 // repeatsにYESを指定すると、繰り返し呼び出されます。 aTimer = [NSTimer timerWithTimeInterval:3 target:self selector:@selector(showInformation) userInfo:nil repeats:YES]; // Timerを設定します。 [[NSRunLoop mainRunLoop] addTimer:aTimer forMode:NSDefaultRunLoopMode]; } // NSTimerから呼び出されるメソッド -(void) showInformation { static int time = 1; NSLog(@"showInformation is called. time = %d", time); // Timerを終了する場合には、 // NSTimerのインスタンスのinvalidateメソッドを呼び出します。 if (time > 10) { NSLog(@"aTimer invalidate"); [aTimer invalidate]; } time++; }NSTimerのrepeatsをYESにすると、繰り返し呼び出されるようになります。
また呼び出しを中止する場合には、NSTimer#invalidateを呼び出します。
参考資料
今回利用したクラスのクラスリファレンスのURLを記載します。- NSTimer Class Reference
- NSRunLoop Class Reference
最後に
上記のようなちょっとしたコードも調べないとわからなかったので、今回ブログに残しました。簡単なTipsですが、どなたかの役に立てば幸いです。
最後までご覧頂きましてありがとうございました。