web-dev-qa-db-ja.com

すぐにNSTimerをトリガーする方法?

アプリの起動時にメソッドを呼び出し、5秒ごとに同じメソッドを呼び出す必要があります。

私のコードはかなり単純です:

// Call the method right away
[self updatestuff:nil]

// Set up a timer  so the method is called every 5 seconds
timer = [NSTimer scheduledTimerWithTimeInterval: 5
                                          target: self
                                        selector: @selector(updatestuff:)      
                                        userInfo: nil
                                         repeats: YES];

タイマーにはオプションがあり、すぐにトリガーされ、その後5秒ごとにトリガーされますか?

42
Luc

NSTimer-fire[timer fire];はあなたが探しているものです。

これにより、タイマーが呼び出され、すぐにタイマーが呼び出され、遅延時間が解消されます。

79
MCKapur

タイマーをスケジュールして、同じコード行ですぐにイベントを発生させることはできません。したがって、2行のコードでそれを行う必要があります。

まず、タイマーをスケジュールしてから、すぐにタイマーで「fire」を呼び出します。

timer = [NSTimer scheduledTimerWithTimeInterval: 5
                                      target: self
                                    selector: @selector(updatestuff:)      
                                    userInfo: nil
                                     repeats: YES];
[timer fire];

火災が呼び出されると、タイマーが実行されたためにタイマーの起動を待機する時間間隔がリセットされ、その後、指定された間隔(この場合は5秒ごと)で実行され続けます。

17
Jeff

Swiftの場合:

timer = Timer.scheduledTimer(timeInterval: interval, target: self, selector: #selector(foo), userInfo: nil, repeats: true)
timer.fire()
5
inigo333

タイマーを初期化して、同じ行で起動できます。

[(checkStatusTimer = [NSTimer scheduledTimerWithTimeInterval:60.0 target:self selector:@selector(checkStatusTimerTick:) userInfo:nil repeats:YES]) fire];
3
hasan