如何立即触发NSTimer?

时间:2012-05-26 06:36:39

标签: ios 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秒触发一次?

4 个答案:

答案 0 :(得分:74)

NSTimer的{​​{1}},-fire就是你要找的。

这将触发/立即调用定时器来消除时间延迟。

答案 1 :(得分:17)

您无法在同一行代码中安排计时器并立即触发事件。所以你必须用2行代码来完成它。

首先,安排计时器,然后立即在计时器上调用'fire':

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

当调用fire时,计时器等待触发的时间间隔将重置,因为它刚刚运行,然后将以指定的时间间隔继续运行 - 在这种情况下,每5秒钟。

答案 2 :(得分:2)

在Swift中:

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

答案 3 :(得分:0)

这可以很快地在一行中实现:

import requests 
r = requests.get(link, stream=True)
print(r.headers)

}