我的应用程序中有一个计时器,它使用以下方法触发某个事件
myTimer = NSTimer.scheduledTimerWithTimeInterval(10, target: self,
selector: "searchForDrivers:", userInfo:nil, repeats: true)
我注意到它第一次以10 ms的延迟触发。我不想第一次推迟用户。但对于第二个请求,我希望它延迟10毫秒。我怎么能实现这个目标呢?
答案 0 :(得分:3)
First schedule the timer as you've done.
timer = NSTimer.scheduledTimerWithTimeInterval(
10.0, target: self,
selector: "searchForDrivers:",
userInfo: nil,
repeats: true
)
Then, immediately afterwards, fire timer
.
timer.fire()
According to the documentation,
You can use this method to fire a repeating timer without interrupting its regular firing schedule. If the timer is non-repeating, it is automatically invalidated after firing, even if its scheduled fire date has not arrived.
答案 1 :(得分:0)
另一种方法是你可以使用两个定时器:
var myTimer = NSTimer()
var secondTimer = NSTimer()
之后你可以这样设置两个计时器:
myTimer = NSTimer.scheduledTimerWithTimeInterval(0, target: self,
selector: "searchForTRuckDrivers", userInfo:nil, repeats: false)
secondTimer = NSTimer.scheduledTimerWithTimeInterval(10, target: self,
selector: "searchForTRuckDrivers", userInfo:nil, repeats: true)
您可以设置延迟为0的第一个定时器,在设置另一个延迟为10的定时器时不再重复,它会一次又一次地重复。
在方法之后,您可以通过以下方式使第一个计时器无效:
func searchForTRuckDrivers() {
if myTimer.valid {
myTimer.invalidate()
}
}
这将删除第一个计时器,但第二个计时器将延迟调用此方法。
希望它会有所帮助。