サーチ…


タイマーの作成

これは、 5.0秒でselfdoSomethingメソッドを呼び出すタイマーを作成します。

[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