定时器及运行循环
- NSRunLoop是iOS消息机制的处理模式
- NSRunLoop的主要作用:控制NSRunLoop里面线程的执行和休眠,在有事情做的时候使当前NSRunLoop控制的线程工作,没有事情做让当前NSRunLoop的控制的线程休眠。 通过所有的“消息”都被添加到了NSRunLoop中去,而在这里这些消息并分为“input source”和“Timer source” 并在循环中检查是不是有事件需要发生,如果需要那么就调用相应的函数处理 定时器(NSTimer)
RunLoopMode(运行循环模式)
1.NSDefaultRunLoopMode 这是大多数操作中使用的模式。
2.NSConnectionReplyMode 该模式用来监控NSConnection对象。你通常
不需要在你的代码中使用该模式。
3.NSModalPanelRunLoopMode Cocoa使用该模式来标识modalpanel(模
态面板)的事件。
4.NSEventTracking(UITrackingRunLoopMode) Cocoa使用该模式来处
理用户界面相关的事件。
5.NSRunLoopCommonModes 这是一组可配置的通用模式。将input
sources与该模式关联则同时也将input sources与该组中的其它模式进行了
关联。对于Cocoa应用,该模式缺省的包含了default,modal以及event tracking模式。
一个常见的问题就是,主线程中一个NSTimer添加在default mode中, 当界面上有一些scroll view的滚动频繁发生导致run loop运行在UItraking mode中, 从而这个timer没能如期望那般的运行。 所以,我们就可以把这个timer加到NSRunLoopCommonModes中来解决(iOS中)。 定时器是让程序定时执行某一个方法:
定时器(NSTimer)
/*
* scheduledTimerWithTimeInterval: 间隔时间(秒)
* target: 所要应用定时器的对象
* selector: 调用的方法
* userInfo: 所要传递的参数
* repeats: 是否重复调用
*/
[NSTimer scheduledTimerWithTimeInterval:1
target:self selector:@selector(timerAction:) userInfo:@"参数" repeats:YES];
可以点击下列网址详细了解....(但是现阶段由于还有一些知识点是在后面才讲到,没有一些知识的铺垫,看这些文章的时候,有些吃力,所以看到有些不理解的时候,暂时不要太钻)