//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)
网友评论