NSTimer使用方法
- 初始化
+ (NSTimer)timerWithTimeInterval:(NSTimeInterval)titarget:(id)aTarget selector:(SEL)aSelector userInfo:(nullable id)userInfo repeats:(BOOL)yesOrNo;
+ (NSTimer)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(nullable id)userInfo repeats:(BOOL)yesOrNo;
注:创建NSTimer定时器对象时,没用schedeled方式初始化,创建后需要手动
addTimer:forMode:
将timer添加到一个runloop中。
而schedeled方式初始化后,就会将timer以默认mode直接添加到当前的runloop中。
其中userInfo:该参数可以为nil,当定时器失效时,由你指定的对象保留和释放该定时器。
-
举例
NSTimer *timer1 = [NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];NSTimer *timer2 = [NSTimer timerWithTimeInterval:2.0 target:selfselector:@selector(timerFired:)userInfo:nil repeats:YES]; [NSRunloop currentRunLoop] addTimer:timer2 forMode:NSDefaultRunLoopMode];
触发(启动)
当timer定时器对象创建完后,会在指定的timeInterval后自动触发
也可以使用- (void)fire
使其定时器立即触发
在重复执行的定时器中调用此方法后立即触发该定时器,但不会中断其之前的执行计划;
在不重复执行的定时器中调用此方法,立即触发后,就会使这个定时器失效。
- 停止
-(void)invalidate
这是唯一一个可以将定时器从润loop中移出的方法。
- 注意事项
NSTimer可以精确到50-100毫秒.
NSTimer不是绝对准确的,而且中间耗时或阻塞错过下一个点,那么下一个点就pass过去了.