RunLoop基本概念

2019-09-30  本文已影响0人  Code_人生

一、RunLoop是什么?

二、Runloop的作用

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        while (1) {
            NSLog(@"hello");
            static int a = 0;
            if (a == 50000) {
                sleep(30);
            }
            NSLog(@"======%d======",a);
            a += 1;
        }
    }
    return 0;
}
  1. 保证线程不退出。
  2. 负责监听所有的事件(iOS中的触摸、时钟、网络事件)
  3. RunLoop负责绘制UI

三、Runloop的item

RunLoop 处理的事件
static void __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__();
static void __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__();
static void __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__();
static void __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__();
static void __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__();
static void __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__();

四、runloop与线程的关系

Runloop:线程.png
  1. 线程 -- runloop -- timer
  2. 子线程runloop 默认不开启
  3. timer 依赖于runloop
RunLoop的金典.png
Runloop结构.png Runloop机制.png
RunLoop的结构.png
RunLoop的原理.png

RunLoop简易执行流程

上一篇下一篇

猜你喜欢

热点阅读