2010年5月6日木曜日

タイマー

特定秒数後に特定の処理を行わせたい場合は、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 件のコメント:

コメントを投稿