美文网首页
初识RunLoop

初识RunLoop

作者: 哔哩哔哩智能喵 | 来源:发表于2016-12-12 17:55 被阅读9次
  • 初识RunLoop

  • 1.RunLoop的作用

    • A 保持程序的持续运行(ios程序为什么能一直活着不会死)

    • B 处理App中的各种事件(触摸、定时事件、selector事件....)

    • C 节省CPU资源,提高程序性能,有事件就处理事件,没有就休息

  • 2.RunLoop的重要说明、重要说明、重要说明

    • 1. 如果没有RunLoop,那么程序已启动就会退出,什么事情都做不了

    • 2. 如果没有RunLoop,那么相当于在内部有一个死循环,能够保持程序持续运行

    • 3. main函数中的RunLoop
      • 在UIAPPlication函数内部就启动了一个RunLoop,该函数返回一个int类型的值
      • 这个默认启动的RunLoop是跟主线程相关
  • 3.RunLoop的API

    • 1. 在iOS开发中有两套api来访问Runloop
      • a.foundation框架【NSRunloop】
      • b.core foundation框架【CFRunloopRef】
- #####2. NSRunLoop和CFRunLoopRef都代表着RunLoop对象,它们是等价的,可以互相转换
- #####3. NSRunLoop是基于CFRunLoopRef的一层OC包装,所以要了解RunLoop内部结构,需要多研究CFRunLoopRef层面的API(Core Foundation层面)
  • 4.RunLoop与线程

    • 1.Runloop和线程的关系:一个Runloop对应着一条唯一的线程

      • 问题:如何让子线程不死

      • 回答:给这条子线程开启一个Runloop

    • 2.Runloop的创建:主线程Runloop已经创建好了,子线程的runloop需要手动创建

    • 3.Runloop的生命周期:在第一次获取时创建,在线程结束时销毁

  • 5.获取RunLoop

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    //获得主线程对应的runloop
    NSRunLoop *mainRunLoop = [NSRunLoop mainRunLoop];
    //获取当前线程对应的runloop
    NSRunLoop *currentRunLoop = [NSRunLoop currentRunLoop];
    
    NSLog(@"%p---%p",mainRunLoop,currentRunLoop);
    /**
     Runloop和线程的关系
     一一对应的关系,主线程runloop已经创建,但是子线程的需要手动创建
     */
   NSThread *thread =  [[NSThread alloc]initWithTarget:self selector:@selector(runLoop) object:nil];
    [thread start];
}
-(void)runLoop
{   //创建子线程对应的runloop,currentRunLoop是懒加载的
    NSLog(@"%@",[NSRunLoop currentRunLoop]);
    NSLog(@"run---%@",[NSThread currentThread]);
}

相关文章

  • 初识RunLoop

    初识RunLoop 1.RunLoop的作用A 保持程序的持续运行(ios程序为什么能一直活着不会死)B 处理Ap...

  • Runloop初识

    一、作用: 1.保证程序持续运行 处理APP中的各种事件(如触摸事件、定时器事件、Selector事件) 节约cu...

  • 初识 RunLoop

    字面理解:运行循环,相当于在跑圈(400米) 基本作用: 1.保持程序的持续运行(就像我们运行一个程序,就会开启一...

  • RunLoop 初识

    0x00 RunLoop 是什么? 在程序运行的过程中循环做的一些事情, 保证 main 函数不会直接退出, 并处...

  • 初识runloop

    一、什么是runloop 没错runloop就是做这件事的。在程序的主入口 main 函数中将我们的代码包裹再wh...

  • 深入浅出 RunLoop(五):RunLoop 与 NSTime

    RunLoop 系列文章 深入浅出 RunLoop(一):初识深入浅出 RunLoop(二):数据结构深入浅出 R...

  • 深入浅出 RunLoop(四):RunLoop 与线程

    RunLoop 系列文章 深入浅出 RunLoop(一):初识深入浅出 RunLoop(二):数据结构深入浅出 R...

  • 深入浅出 RunLoop(三):事件循环机制

    RunLoop 系列文章 深入浅出 RunLoop(一):初识深入浅出 RunLoop(二):数据结构深入浅出 R...

  • 深入浅出 RunLoop(一):初识

    RunLoop 系列文章 深入浅出 RunLoop(一):初识深入浅出 RunLoop(二):数据结构深入浅出 R...

  • 深入浅出 RunLoop(二):数据结构

    RunLoop 系列文章 深入浅出 RunLoop(一):初识深入浅出 RunLoop(二):数据结构深入浅出 R...

网友评论

      本文标题:初识RunLoop

      本文链接:https://www.haomeiwen.com/subject/thammttx.html