NSTimer和运行循环

//1.本质上就是创建一个时钟,以默认的模式添加到运行循环中 [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector() userInfo:nil repeats:YES]; //2.等同于1 [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode]; //3.以NSRunLoopCommonModes的模式添加到运行循环中 [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

运行模式有两种:NSDefaultRunLoopMode 和 NSRunLoopCommonModes(滚动)

NSDefaultRunLoopMode

一旦发现有滚动事件,默认模式暂时不监听,但是会累积,也就是在下一次可监听的时候会把之前没执行的一并执行。
eg.图片轮播器定时切换的时候,拖住某张图片后放开,会一下子切换n张

NSRunLoopCommonModes

即使有滑动也监听

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

不准确。通常用来有一定时间跨度的周期性实际的处理。

CADisplayLink (屏幕刷新一次就执行一次 60Hz)

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