RunLoop和线程的关系:
- RunLoop 的作用就是来管理线程的,当线程的 RunLoop开启后,线程就会在执行完任务后,处于休眠状态,随时等待接受新的任务,而不是退出。
2.只有主线程的RunLoop是默认开启的,所以程序在开启后,会一直运行,不会退出。其他线程的RunLoop如果需要开启,需要手动开启
RunLoop与线程是一一对应的,一个runloop对应一个核心的线程,为什么说是核心的,是因为runloop是可以嵌套的,但是核心的只能有一个,他们的关系保存在一个全局的字典里
RunLoop在第一次获取时被创建,在线程结束时被销毁。对于主线程来说,RunLoop在程序一启动就默认创建好了。
5.对于子线程来说,RunLoop是懒加载的,只有当我们使用的时候才会创建,所以在子线程用定时器要注意:确保子线程的RunLoop被创建和开启,不然定时器不会回调
RunLoop的mode作用是什么?:
1.model 主要是用来指定事件在运行循环中的优先级的,分为:
- NSDefaultRunLoopMode(kCFRunLoopDefaultMode):默认,空闲状态
- UITrackingRunLoopMode :ScrollView滑动时
- UIInitializationRunLoopMode :启动时
- NSRunLoopCommonModes(kCFRunLoopCommonModes):Mode集合
2.苹果公开提供的 Mode有两个:
- NSDefaultRunLoopMode(kCFRunLoopDefaultMode)
- NSRunLoopCommonModes(kCFRunLoopCommonModes)