Runloop_1 基本概念

Runloop是一个运行循环机制,是iOS底层机制,在程序开启的时候,这个运行循环就已经开启了

先来个开胃菜

int main(int argc, char * argv[]) {
    @autoreleasepool {
        
        NSLog(@"11111");
        int a = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        
        NSLog(@"22222");
        return a;
    }
    /*
     11111 打印出来了
     22222 并没有打印出来
     因为只要[[NSRunLoop currentRunLoop] run];
     这句代码之后的代码就不会执行,因为一直堵在循环之外
     说明在UIApplicationMain就已经开启了runloop 声明一点runloop并没有默认开启一说
     我的理解是在UIApplicationMain里
     做了开启一条主线程
     并且开启主线程的runloop的操作
     */
}

关于UIApplicationMain有关添加Runloop的解释

Runloop_1 基本概念_第1张图片
image.png

如果没有Runloop,app程序不会活着的,原因如下

  • main开启里一条线程,这条线程是这个app的主线程
  • 这个主线程是一个常驻线程,不会退出,为什么常驻?是因为这条线程上面的Runloop被开启了
Runloop的作用
  • 保证线程不退出(保证主线程不退出就意味着保证应用程序不退出)
  • 负责监听所有的事件!!!(触摸事件(ui事件) 时钟 网络事件)

你可能感兴趣的:(Runloop_1 基本概念)