特定秒数後に特定の処理を行わせたい場合は、NSTimerクラスを使います。
NSTimerのscheduledTimerWithTimeIntervalメソッドのパラメータに、秒数、callbackするオブジェクト、callbackするメソッド、メソッドに渡すオブジェクト、繰り返し指示を指定します。
NSString* str = @"TEST";
timerClock = [NSTimer scheduledTimerWithTimeInterval: 1.0f // 間隔1秒
target: self // 呼び先オブジェクト
selector: @selector( callbackMethod: ) // 呼び先メソッド
userInfo: str // 参照オブジェクト
repeats: YES ]; // 繰り返しあり
・
・
・
- (void) callbackMethod: (NSTimer*)timerClock
{
NSLog([timerClock userInfo]);
}
上記例では、自分のクラスのcallbackMethodが1秒間隔で呼出されます。
@selector(・・・)は、関数ポインタを指し示す時に用いるObjective-Cの型です。
繰り返し指示がYESなので、何もしなければ延々と1秒間隔で呼出されることになります。
callbackされたメソッドのパラメータ(timerClock)には呼び元のNSTimerのインスタンスが格納されます。
[timerClock userInfo]は、呼び元で指定したオブジェクト(str)を取得するメソッド(userInfo)を取得する処理です。NSLogでは文字列"TEST"が出力されます。
ちなみにNSLogはコンソールにログを出力する関数です。
タイマーを止めたい時は、 invalidateメソッドを呼出します。
0 件のコメント:
コメントを投稿