iOS:让 NSTimer 从现在开始 5 秒后触发
iOS: Get NSTimer to fire 5 seconds from now
场景 我正在开发一个需要在点击按钮 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?
你的整个 NSDate 计算都是错误的,没有必要。 NSTimer 需要几秒钟。如果你想从现在开始 5 秒后开火,只需传递 5
.
实际上,问题出在我调用的代码 [controlTimer fire];
中。那是遗留的,因为我试图让它工作,但我错误地将它留在了那里。哎呀,浪费了半个小时。因此,对于可能遇到相同问题的你们,您只需要设置
[NSTimer scheduledTimerWithTimeInterval:5.0f target:self selector:@selector(controlTimerExpire) userInfo:nil repeats:NO];
而且您不需要显式调用 fire
,因为 scheduledTimerWithTimeInterval
的 scheduled
部分会根据您设置的时间间隔为您触发选择器。
场景 我正在开发一个需要在点击按钮 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?
你的整个 NSDate 计算都是错误的,没有必要。 NSTimer 需要几秒钟。如果你想从现在开始 5 秒后开火,只需传递 5
.
实际上,问题出在我调用的代码 [controlTimer fire];
中。那是遗留的,因为我试图让它工作,但我错误地将它留在了那里。哎呀,浪费了半个小时。因此,对于可能遇到相同问题的你们,您只需要设置
[NSTimer scheduledTimerWithTimeInterval:5.0f target:self selector:@selector(controlTimerExpire) userInfo:nil repeats:NO];
而且您不需要显式调用 fire
,因为 scheduledTimerWithTimeInterval
的 scheduled
部分会根据您设置的时间间隔为您触发选择器。