IOS 中NSTimer定时器的使用
IOS中NSTimer定时器的使用
NSTimery定时器,主要用于进行定时执行指定方法,常用场景如:获取验证码的按钮倒计时;图片轮播定时。
1使用注意事项:
1.1倒计时时间间隔(时间单位是秒)
1.2指定的执行方法
1.3实现指定执行方法的对象
1.4是否重复执行
2对象的内存管理及销毁
2.1使用方法"invalidate"进行停止
2.2将对象设置为"nil"
2.3特别是在返回到其他视图控制器的时候,要在方法"-(void)viewWillDisappear:
(BOOL)animated"中(注意:不能在方法"-(void)dealloc在设置)将timer停止,并设置为nil
//有效释放 -(void)viewWillDisappear:(BOOL)animated { [superviewWillDisappear:animated]; [timerinvalidate]; timer=nil; } //无效释放 -(void)delloc { [timerinvalidate]; timer=nil; }
3计时器启用关闭继续
3.1开始:
timer.fireDate=[NSDatedistantPast];
3.2停止:
timer.fireDate=[NSDatedistantFuture];
3.3继续:
[timersetFireDate:[NSDatedate]];
使用示例(倒计时):
三种实例化方法,级对应的停止方法
方法1
//实例化方法1初始化后即开始执行 if(self.timer==nil) { self.time=10.0; //带参数 NSNumber*number=@(self.time); self.timer=[NSTimerscheduledTimerWithTimeInterval:1.0target:selfselector:@selector(countDownTime:)userInfo:numberrepeats:YES]; //非必要设置,实际已设置为NSDefaultRunLoopMode模式 [[NSRunLoopcurrentRunLoop]addTimer:self.timerforMode:NSRunLoopCommonModes]; }
//关闭定时器方法1 [self.timerinvalidate]; self.timer=nil;
方法2
//实例化方法2初始后化,需要调用"setFireDate"才开始执行 if(self.timer==nil) { self.timer=[NSTimerscheduledTimerWithTimeInterval:1.0target:selfselector:@selector(countDownTime:)userInfo:nilrepeats:YES]; //非必要设置,实际已设置为NSDefaultRunLoopMode模式 [[NSRunLoopcurrentRunLoop]addTimer:self.timerforMode:NSRunLoopCommonModes]; [self.timersetFireDate:[NSDatedistantFuture]]; } self.time=10.0; [self.timersetFireDate:[NSDatedistantPast]];
//关闭定时器方法2 [self.timersetFireDate:[NSDatedistantFuture]];
方法3
//实例化方法3初始化后,需要调用"fire"才开始执行 if(self.timer==nil) { self.timer=[NSTimertimerWithTimeInterval:1.0target:selfselector:@selector(countDownTime:)userInfo:nilrepeats:YES]; //必须设置NSRunLoop线程池,否则无效 [[NSRunLoopcurrentRunLoop]addTimer:self.timerforMode:NSRunLoopCommonModes]; } self.time=10.0; [self.timerfire];
//关闭定时器方法3 [self.timerinvalidate]; self.timer=nil;
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!