Вопрос по nstimer, ios – Как сразу запустить NSTimer?

40

Мне нужно вызвать метод при запуске моего приложения, а затем вызывать один и тот же метод каждые 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 секунд?

Ваш Ответ

4   ответа
74

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

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

16

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

Сначала запланируйте таймер, а затем немедленно вызовите «огонь». на вашем таймере:

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

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

2

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

[(checkStatusTimer = [NSTimer scheduledTimerWithTimeInterval:60.0 target:self selector:@selector(checkStatusTimerTick:) userInfo:nil repeats:YES]) fire];
Очень красивый синтаксис!

Похожие вопросы