[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ですが、どなたかの役に立てば幸いです。
最後までご覧頂きましてありがとうございました。






