Objective-C Language
NSTimer
サーチ…
タイマーの作成
これは、 5.0
秒でself
のdoSomething
メソッドを呼び出すタイマーを作成します。
[NSTimer scheduledTimerWithTimeInterval:5.0
target:self
selector:@selector(doSomething)
userInfo:nil
repeats:NO];
repeats
パラメータをfalse/NO
設定すると、タイマーを1回だけ起動させます。これをtrue/YES
に設定すると、手動で無効にされるまで5秒ごとに起動します。
タイマーの無効化
[timer invalidate];
timer = nil;
これにより、タイマーが起動しなくなります。 タイマーが作成されたスレッドから呼び出される必要があります。 アップルのメモを参照してください:
このメッセージは、タイマーがインストールされたスレッドから送信する必要があります。別のスレッドからこのメッセージを送信すると、タイマーに関連付けられた入力ソースが実行ループから削除されないことがあり、スレッドが正しく終了しない可能性があります。
nil
を設定すると、次に実行するかどうかを確認するのに役立ちます。
if(timer) {
[timer invalidate];
timer = nil;
}
//Now set a timer again.
手動でタイマーを起動する
[timer fire];
fire
メソッドを呼び出すと、NSTimerは通常スケジュールで実行していたタスクを実行します。
非繰り返しタイマーでは、タイマーが自動的に無効になります。これは、呼び出し、あるfire
時間間隔が一つだけの呼び出しになりますアップする前に。
反復タイマーでは、通常のスケジュールを中断することなくアクションを呼び出すだけです。
タイマーに情報を保存する
タイマーを作成するときに、 userInfo
パラメーターを設定して、タイマーで呼び出す関数に渡す情報を含めることができます。
この関数でタイマーをパラメータとして取ることで、 userInfo
プロパティにアクセスできます。
NSDictionary *dictionary = @{
@"Message" : @"Hello, world!"
}; //this dictionary contains a message
[NSTimer scheduledTimerWithTimeInterval:5.0
target:self
selector:@selector(doSomething)
userInfo:dictionary
repeats:NO]; //the timer contains the dictionary and later calls the function
...
- (void) doSomething:(NSTimer*)timer{
//the function retrieves the message from the timer
NSLog("%@", timer.userInfo["Message"]);
}
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow