1、NSTimer 定时器,这个在我们日常的开发过程中都是经常使用的,下面我们就来回顾一下我们日常使用的 NSTimer 吧。
2、定时器的写法大家都会。如下:
我们先简单了解一下这两句代码,timerWithTimeInterval: 也就是我们选择要去执行的时间,这里是 1.0秒之后。才会去执行 timerRun:这个方法。userInfo: 自然接的是需要传递的数据,repeats:设置定制器需要需要重复去执行 timerRun 方法。
但是我现在就 【图1】我们看下。看下这个方法 我们是讲 NSTimer 添加到 NSRunLoop 中,此时添加的 主线程的runLoop。 如果当前为主线程的话,[NSRunLoop mainRunLoop] 也可以使用 [NSRunLoop currentRunLoop]。我们现在看下 后面会接一个 Mode:。其实runLoop 的Mode 有3个。
那么这三个 Mode 有什么区别呢。我们来看下。首先 ①、NSDefaultRunLoopMode: 这个是默认的。他的特点是优先级在 UI之后。当UI Mode 在使用的时候,是不会去执行定时器的,只有的 UI Mode 闲置的时候才会执行NSTimer。②、UITrackingRunLoopMode:这个的 Track的。特点是只有在UI Track的时候 才会去执行 NSTimer。UI 不动就不执行。
看到上面这两个的介绍,我们在以前开发的过程中都会遇到一个问题,就是去做一个View的动画的时候,在页面滑动的时候 动画就会暂停。相信大家都遇见过。这种情况一般可能就是使用了 默认的runLoop Mode。我们如果想要不管页面滑动还是不滑动的时候 NSTimer 不间断。那可以使用 :
NSDefaultRunLoopMode,UITrackingRunLoopMode 两个Mode 同时使用,苹果为了方便大家,于是有已第三个Mode NSRunLoopCommonModes。这个Mode 特点就不做介绍了,肯定就是上面两个Mode共同的特点。