Подтвердить что ты не робот

Как сразу запустить 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 секунд?

4b9b3361

Ответ 1

NSTimer -fire, [timer fire]; - это то, что вы ищете.

Это приведет к срабатыванию/немедленному вызову таймера, отменяющего задержку времени.

Ответ 2

Вы не можете запланировать таймер и немедленно запустить событие в одной строке кода. Таким образом, вы должны сделать это в двух строках кода.

Сначала планируйте таймер, а затем сразу вызывайте "огонь" на свой таймер:

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

Когда вызывается пожар, временной интервал, который ваш таймер ожидает, будет reset, потому что он просто запустился, а затем продолжит выполнение после этого в указанный интервал - в этом случае каждые 5 секунд.

Ответ 3

Вы можете инициализировать таймер и запустить его в одной строке:

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