主线程的runloop系统创建,自己创建的线程需要自己去创建
1.1 什么是RunLoop?
可以理解为字面意思:Run表示运行,Loop表示循环。结合在一起就是运行的循环的意思。哈哈,我更愿意翻译为『跑圈』。直观理解就像是不停的跑圈。
RunLoop实际上是一个对象,这个对象在循环中用来处理程序运行过程中出现的各种事件(比如说触摸事件、UI刷新事件、定时器事件、Selector事件),从而保持程序的持续运行;而且在没有事件处理的时候,会进入睡眠模式,从而节省CPU资源,提高程序性能。
1.2 RunLoop和线程
RunLoop和线程是息息相关的,我们知道线程的作用是用来执行特定的一个或多个任务,但是在默认情况下,线程执行完之后就会退出,就不能再执行任务了。这时我们就需要采用一种方式来让线程能够处理任务,并不退出。所以,我们就有了RunLoop。
- 一条线程对应一个RunLoop对象,每条线程都有唯一一个与之对应的RunLoop对象。
- 我们只能在当前线程中操作当前线程的RunLoop,而不能去操作其他线程的RunLoop。
- RunLoop对象在第一次获取RunLoop时创建,销毁则是在线程结束的时候。
- 主线程的RunLoop对象系统自动帮助我们创建好了(原理如下),而子线程的RunLoop对象需要我们主动创建。
1.3 默认情况下主线程的RunLoop原理
我们在启动一个iOS程序的时候,系统会调用创建项目时自动生成的main.m的文件。main.m文件如下所示:
作者:行走的少年郎
链接:https://www.jianshu.com/p/d260d18dd551
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。