RunLoop

作者: 攻城狮GG | 来源:发表于2021-04-12 13:31 被阅读0次
    RunLoop知识体系
    RunLoop系列(下面的文章总结的很全面,借用一下😊)
    深入浅出 RunLoop(一):初识
    深入浅出 RunLoop(二):数据结构
    深入浅出 RunLoop(三):事件循环机制
    深入浅出 RunLoop(四):RunLoop 与线程
    深入浅出 RunLoop(五):RunLoop 与 NSTimer
    iOS - 聊聊 autorelease 和 @autoreleasepool:RunLoop 与 @autoreleasepool

    什么是RunLoop?
    RunLoop是通过内部维护的 事件循环 来对 事件/消息进行管理 的一个对象。
    事件循环可以达到:
    有消息时,立即唤醒。
    内核态>>>>>用户态
    无消息时,休眠避免资源占用
    用户态>>>>>内核态

    WeChat9b3c513a88fe004276e24aa359c708c9.png

    main函数如何保持一直运行不退出的?
    在main函数中会调用UIApplicationMain函数内部会启用主线程的RunLoop运行循环,而RunLoop又是对事件循环的维护机制,有消息时,立即唤醒
    这里的,无消息时,休眠避免资源占用,使当前线程处于一个休眠的状态,从而保证不退出

    RunLoop的数据结构
    NSRunLoop是CFRunLoop的封装,提供了面向对象的api

    CFRunLoop包含了

    • pthread
    • currentMode
    • modes
    • commonModes
    • cmomonModeltems

    source0
    需要手动唤醒线程

    source1
    具备唤醒线程的能力

    531617634384_.pic_hd.jpg

    RunLoop的Mode

    RunLoop与NSTimer
    需要将NSTimer加入到RunLoop当中并设置mode

    RunLoop与线程之间的关系

    相关文章

      网友评论

          本文标题:RunLoop

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