情景我正在开发一个应用程序,需要在点击按钮后5秒启动方法。
代码这是应该在5秒后引发controlTimerExpire
方法的代码
NSDate *fiveSecondsFromNow = [[NSDate date] dateByAddingTimeInterval:5.0f];
NSTimeInterval timeInterval = [fiveSecondsFromNow timeIntervalSinceNow];
controlTimer = [NSTimer scheduledTimerWithTimeInterval:timeInterval target:self selector:@selector(controlTimerExpire) userInfo:nil repeats:NO];
// I ALSO TRIED THIS; HARDCODING IT LIKE BELOW
controlTimer = [NSTimer scheduledTimerWithTimeInterval:5.0f target:self selector:@selector(controlTimerExpire) userInfo:nil repeats:NO];
问题 controlTimerExpire
在点击按钮后立即被解雇。按钮点击和controlTimerExpire
方法触发之间需要5秒钟。
问题为什么要立即开火并且从现在起5秒钟不开火?
LINKS 我上面所做的正是下面这些链接要做的事情,但是,它不会产生与链接相同的结果。为什么?
Set an NSTimer to fire once in the future
How to call a method every x seconds in Objective-C using NSTimer?
答案 0 :(得分:3)
您的整个NSDate计算错误且不必要。 NSTimer需要几秒钟。如果你想从现在开始5秒钟,只需通过5
。
答案 1 :(得分:2)
问题实际上是在我调用[controlTimer fire];
的代码中。这是遗留下来的,因为我试图让它工作,我错误地把它留在了那里。哎呀,浪费了半个小时。所以对于那些可能遇到同样问题的人来说,你只需要设置
[NSTimer scheduledTimerWithTimeInterval:5.0f target:self selector:@selector(controlTimerExpire) userInfo:nil repeats:NO];
并且您不需要明确调用fire
,因为scheduled
的{{1}}部分会根据您设置的时间间隔为您启动选择器。