NSTimer总结

NSTimer使用方法

  1. 初始化
    + (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,当定时器失效时,由你指定的对象保留和释放该定时器。

  1. 举例
    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];    
    
  2. 触发(启动)

当timer定时器对象创建完后,会在指定的timeInterval后自动触发
也可以使用- (void)fire使其定时器立即触发
在重复执行的定时器中调用此方法后立即触发该定时器,但不会中断其之前的执行计划;
在不重复执行的定时器中调用此方法,立即触发后,就会使这个定时器失效。

  1. 停止

-(void)invalidate这是唯一一个可以将定时器从润loop中移出的方法。

  1. 注意事项

NSTimer可以精确到50-100毫秒.
NSTimer不是绝对准确的,而且中间耗时或阻塞错过下一个点,那么下一个点就pass过去了.

你可能感兴趣的:(NSTimer总结)