一.消息循环(runLoop)的作用
1,防止程序退出,
2,接受事件
3,如果没有事件,让程序自动休眠
二.消息源
1, 输入源:键盘、鼠标、NSBoard、NSPort
2,定时源:NSTimer
三.创建消息的步骤:
1, 创建消息
2,方法循环中,并指定消息的模式
3,消息模式和循环模式要匹配,否则不能运行
![](https://images2015.cnblogs.com/blog/821799/201511/821799-20151103222448899-358717675.png)
注意:主线程默认是开启消息循环,子线程默认是关闭消息循环的
四.手动开启消息循环的方式
方式一 :run方法,缺点:开了无法关闭
![](https://images2015.cnblogs.com/blog/821799/201511/821799-20151103222759164-442188207.png)
方式二 :runUntildata 给定一个时间,让消息循环持续这么长时间,不太靠谱,因为不能预测什么时候事件出现
![](https://images2015.cnblogs.com/blog/821799/201511/821799-20151103222929461-1400784442.png)
方式三:apple推荐(从run介绍里面可以找到改方法)
通过全局变量shouldKeepRunning控制该消息是否开启循环
![](https://images2015.cnblogs.com/blog/821799/201511/821799-20151103223101274-1729729336.png)