RunLoop

RunLoop和线程的关系:

  1. RunLoop 的作用就是来管理线程的,当线程的 RunLoop开启后,线程就会在执行完任务后,处于休眠状态,随时等待接受新的任务,而不是退出。

2.只有主线程的RunLoop是默认开启的,所以程序在开启后,会一直运行,不会退出。其他线程的RunLoop如果需要开启,需要手动开启

  1. RunLoop与线程是一一对应的,一个runloop对应一个核心的线程,为什么说是核心的,是因为runloop是可以嵌套的,但是核心的只能有一个,他们的关系保存在一个全局的字典里

  2. RunLoop在第一次获取时被创建,在线程结束时被销毁。对于主线程来说,RunLoop在程序一启动就默认创建好了。

5.对于子线程来说,RunLoop是懒加载的,只有当我们使用的时候才会创建,所以在子线程用定时器要注意:确保子线程的RunLoop被创建和开启,不然定时器不会回调

RunLoop的mode作用是什么?:

1.model 主要是用来指定事件在运行循环中的优先级的,分为:

  • NSDefaultRunLoopMode(kCFRunLoopDefaultMode):默认,空闲状态
  • UITrackingRunLoopMode :ScrollView滑动时
  • UIInitializationRunLoopMode :启动时
  • NSRunLoopCommonModes(kCFRunLoopCommonModes):Mode集合

2.苹果公开提供的 Mode有两个:

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

推荐阅读更多精彩内容