NSTimer 运行循环

 NStimer 的第一种方法   

 scheduled方法本质上就是创建一个时钟,添加到运行循环模式NSDefaultRunLoopMode 

 self.timer =  [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(uploadTime:)  userInfo:@"hello timer" repeats:YES];


 NStimer 的第二种方法  

 timer添加到运行循环  模式:默认的运行循环模式 NSDefaultRunLoopMode

  self.timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(uploadTime:) userInfo:@"hello" repeats:YES];

  [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSDefaultRunLoopMode];


 timer添加到运行循环  模式:NSRunLoopCommonModes

    self.timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(uploadTime:) userInfo:@"hello" repeats:YES];

    [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];


     从代码上看 运行循环有两种模式

     NSDefaultRunLoopMode  一旦发现有滚动事件,定时器停止监听

     NSRunLoopCommonModes (滚动, 定时器依旧执行)



NSTimer 准确吗?如果不准确,怎么办?

  不准  通常用来有一定事件跨度的周期性事件的处理:

<1> 可以用多线程技术

<2> CADisplayLink 控制事件会更准确




你可能感兴趣的:(NSTimer 运行循环)