RunLoop与线程

什么是线程

线程就像是工厂的流水线负责任务的开始和结束,每一个方法就像是流水线上的工人负责处理从流水线上过来的任务.负责管理线程的就是工厂的管理员(CPU).管理员为了节约电量在流水线没有工作的时候会关闭流水线.而CPU则会在线程执行完一次任务后销毁线程.

RunLoop与线程_第1张图片
QQ20170629-0.png

RunLoop

关于线程的说明网上有更详细的资料,RunLoop也有很多的说法,这里说下关于我自己的理解.

线程任务结束后就被销毁.如果主线程被销毁整个程序也就走到了声明的尽头,所以为了不让主线程退出,我们需要给主线程装上马达,让他一直处于运行状态.这样主线程就不会退出.当需要处理事件的时候程序才能够响应.

RunLoop的作用

  • 保证线程不被销毁
  • 分发任务交给线程处理

用代码解读RunLoop

        do {
            if (NSDefalutRunLoopMode) {
                // 执行默认模式下的事件
                // 执行NSRunLoopCommonModes模式下的事件
            }
            if (UITrackingRunLoopMode) {
                // 执行UI模式下的事件
                // 执行NSRunLoopCommonModes模式下的事件
            }
            if (UIInitializationRunLoopMode) {
                // 执行系统事件
            }
        } while (YES);

RunLoop就是一个do...while,它一直在遍历自身内容部的方法,只执行当前模式下的方法,默认情况下是NSDefalutRunLoopMode模式.当scrollView滚动时切换到UITrackingRunLoopMode(滚动滑动块不会切换模式),当收到系统事件则切换到UIInitializationRunLoopMode模式.当这两种模式都没有任务时自动切换到NSDefalutRunLoopMode模式下.
NSRunLoopCommonModes模式比较特殊,无论是NSDefalutRunLoopMode还是UITrackingRunLoopMode模式都会执行这个模式中的事件.

粗浅的理解,如果想更详细的了解RunLoop请看下面的连接
http://blog.ibireme.com/2015/05/18/runloop/

你可能感兴趣的:(RunLoop与线程)