Objective-C 中的 NSTimer 是一个定时器,可以用来执行周期性的任务。倒计时是一个常见的应用场景,可以使用 NSTimer 来实现。
以下是一个简单的倒计时示例代码:
- (void)startTimerWithDuration:(NSTimeInterval)duration {
NSDate *fireDate = [NSDate dateWithTimeIntervalSinceNow:duration];
self.timer = [NSTimer timerWithFireDate:fireDate interval:1.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
}
- (void)timerFired:(NSTimer *)timer {
NSTimeInterval remainingTime = [timer.fireDate timeIntervalSinceNow];
if (remainingTime <= 0) {
[self.timer invalidate];
self.timer = nil;
// 倒计时结束后的操作
} else {
// 更新倒计时显示
}
}
在这个示例中,我们使用 timerWithFireDate:interval:target:selector:userInfo:repeats:
方法创建了一个 NSTimer 对象,并将其添加到当前运行循环中。startTimerWithDuration:
方法接受一个持续时间参数,该参数指定了倒计时的持续时间。timerFired:
方法在每次定时器触发时被调用,我们在这个方法中更新倒计时显示或者在倒计时结束后执行相应的操作。
需要注意的是,由于 NSTimer 的精度不高,因此在需要高精度的倒计时场景中,可以使用其他方法来实现,例如使用 GCD 的 dispatch_source_t
对象来实现。
领取专属 10元无门槛券
手把手带您无忧上云