//游戏开始的时间
NSDate *_gameStartTime;
//游戏时钟
NSTimer *_gameTimer;
- (void)viewDidLoad {
//多长时间触发一次
//如果看到函数有target,就写self
//selector需要调用的方法,最终只能带一个参数,只能是自身
//最后设置是否重复,通常设置yes
_gameTimer=[NSTimerscheduledTimerWithTimeInterval:1.0ftarget:selfselector:@selector(updateTimer:)userInfo:nilrepeats:YES];
//记录一下游戏开始时间
//使用当前系统时间
_gameStartTime=[NSDatedate];
}
-(void)updateTimer:(NSTimer *)sender
{
//此处设置游戏计算器标签的内容
// firedate时钟的当前触发时间
NSInteger deltaTime=[sender.fireDatetimeIntervalSinceDate:_gameStartTime];
//设置时间字符串
NSLog(@"time has pasted :%ld",deltaTime);
NSString *text=[NSStringstringWithFormat:@"%02d:%02d",deltaTime/60, deltaTime%60];
//设置计数器
[_timerLabelsetText:text];
}
在时钟触发方法中,可以使用sender.fireDate获取到时钟被触发的时间
注意:使用NSTimer的时候,千万不要忘记调用invalidate方法关闭时钟。
NSTimer可能不会是及时相应触发时间的,它的执行优先级相对较低,因此,不要使用NSTimer去做实时响应需求较高的周期性操作。