Run Loop的理解

RunLoop,是多线程的法宝,即一个线程一次只能执行一个任务,执行完任务后就会退出线程。主线程执行完即时任务时会继续等待接收事件而不退出。非主线程通常来说就是为了执行某一任务的,执行完毕就需要归还资源,因此默认是不运行RunLoop的;

每一个线程都有其对应的RunLoop,只是默认只有主线程的RunLoop是启动的,其它子线程的RunLoop默认是不启动的,若要启动则需要手动启动;

在一个单独的线程中,如果需要在处理完某个任务后不退出,继续等待接收事件,则需要启用RunLoop;

NSRunLoop提供了一个添加NSTimer的方法,可以指定Mode,如果要让任何情况下都回调,则需要设置Mode为Common模式;

实质上,对于子线程的runloop默认是不存在的,因为苹果采用了懒加载的方式。如果我们没有手动调用[NSRunLoop currentRunLoop]的话,就不会去查询是否存在当前线程的RunLoop,也就不会去加载,更不会创建。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Run Loop是什么 RunLoop顾名思义,是运行循环。它跟线程是一一对应的,每一个线程都有一个RunLoop...
    楚槟夕阅读 2,978评论 0 2
  • Run loop 剖析:Runloop 接收的输入事件来自两种不同的源:输入源(intput source)和定时...
    Mitchell阅读 12,495评论 17 111
  • 首先看一段AF2.x经典代码: 首先我们要明确一个概念,线程一般都是一次执行完任务,就销毁了。 而添加了runlo...
    涂耀辉阅读 22,618评论 42 293
  • 深入理解RunLoop 由ibireme| 2015-05-18 |iOS,技术 RunLoop 是 iOS 和 ...
    橙娃阅读 886评论 1 2
  • 今天做完指甲回来的天空,正好拍到一只飞过的鸟。 昨天和师姐夜游清华,燃起的不仅是多拍多学的愿望,而是我这个人真的有...
    我是Stella呀阅读 177评论 0 0