美文网首页收藏ios
RunLoop运行循环

RunLoop运行循环

作者: T_guo | 来源:发表于2019-10-23 15:48 被阅读0次

    1.什么是RunLoop?

    (1)运行循环
    (2)在程序运行过程只能够循环做一些事情

    RunLoop的应用范畴?

    (1)定时器,performSelector
    (2) GCD Async Main Queue
    (3)事件响应,手势识别,界面刷新
    (4)网络请求
    (5)AutoreleasePool

    3.RunLoop的作用?

    (1)程序并不会马上退出,而是保持运行状态
    (2)保证程序的持续运行
    (3)处理APP中的各种事件(比如触摸事件,定时器事件等)
    (4)节省CPU资源,提高程序性能:该做事时做事,该休息时休息

    4.RunLoop的内部实现逻辑?

    image.png

    5.RunLoop和线程的关系?

    (1)每一条线程都有唯一的一个与之对应的RunLoop对象
    (2)RunLoop对象保存在全局的Dictionary里,线程作为key,RunLoop作为Value
    (3)线程刚创建的时并没有RunLoop对象,RunLoop对象会在第一次获取它的时候创建
    (4)RunLoop会在线程结束时销毁
    (5)主线程的RunLoop已经自动获取(创建),子线程默认没有开启RunLoop

    6.timer和RunLoop的关系?

    image.png

    7.RunLoop的mode作用是什么?

    (1)一个RunLoop包含若干个Mode,每个Mode又包含若干个Source0/Source1/Timer/Observer
    (2)RunLoop启东时只能选择其中一个Mode,作为currentMode
    (3)如果需要切换Mode,只能退出当前Loop,再重新选择一个Mode进入
    (4)不同组的Source0/Source1/Timer/Observe能分隔开来,互不影响
    (5)如果Mode里没有任何Source0/Source1/Timer/Observe,Runloop就会立马停止
    (5)CFRunLoopModeRef常见的2种
    kCCFRunLoopDefaultMode(NSDefaultRunLoopMode):APP的默认Mode,通常主线程是在这个Mode下运行
    (5)UITrackingRunLoopMode:界面跟踪Mode,用于ScrollView追踪触摸滑动,保证界面滑动时不受其他Mode的影响

    相关文章

      网友评论

        本文标题:RunLoop运行循环

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