NSRunLoop的注意要点

NSRunLoop就像一个死循环,当需要他的时候就会唤醒,当不需要他的时候他就会进入休眠。他是IOS中与各种事件源还有时钟源相关的东西。通过他,IOS程序才可以不断的接受输入信息和处理定时事件。他的好处有两个:1.解偶:比如处理一个事件,他其实是把事件放到消息队列里面去,这样就使得主调方和被调方解偶,主调方不需等到调用事件处理完成才进行下一步操作。2。节省CPU:他是在需要时唤醒不需要时休眠。

在程序中,每一个线程都有他的一个根NSRunLoop,除了主线程之外,其他线程都需要手动的唤醒。当然,线程里面不一定只有一个NSRunLoop,创建多个NSRunLoop只能嵌套创建。

下面说一些平常我们写程序与NSRunLoopx相关的的一些有用的知识。

1.首先是NSTimer,平常我们滚动ScrollView活着在一个非主线程中调用定时器时,定时器是不会走的。需要我们手动将NSTimer添加到某个模式中去。添加的函数如下:

[[NSRunLoop currentRunLoop]addTimer:timer forMode:NSRunLoopCommonModes]。

2.UIEvent的事件分发都是通过NSRunLoop.

3.autorealse是发生在两次NSRunLoop睡眠之间。

4.更换Mode只能先销毁原始的NSRunLoop,再新建一个然后给他指定Mode。

你可能感兴趣的:(NSRunLoop的注意要点)