美文网首页
RunLoop简单总结

RunLoop简单总结

作者: 需要药 | 来源:发表于2019-08-07 14:05 被阅读0次

    一:概念

    1>.与thread一一对应

    2>.event在特定mode下执行

    3>.mode由CFRunLoopTimer,CFRunLoopSource,CFRunLoopObserve类型构成

    4>.source是runloop的数据源的抽象类(protocol)

            4.1 source0:处理app内内部事件,app自己负责管理(触发)如:             UIEvent,CFSocket

            4.2 source1:由RunLoop和内核管理,Mach port驱动,如:CFMachPort,CFMessagePort

    如有需要可从中选择一种来实现自己的source

     5>.比较重要CFRunLoopObserver:向外部报告RunLoop当前的状态更改(通过代理):框架中很多机制都用RunLoopObserver触发:如CAAnimation

    6>.RunLoopObserver与Autorelease Pool

    uikit通过RunLoopObserver在RunLoop两次Sleep间对AutoreleasePool进行Pop和Push,将这次Loop中产生的autorelease对象释放

    二:CFRunLoopMode

    1>.RunLoop在同一时段只能且必须在一种特定mode下run

    2>.更换mode时,需要停止当前Loop,然后重启新loop

    3>.mode是iOS App滑动流畅的原因

        3.1:mode类型

             UIInitializationRunLoopMode:私有,app启动时

            NSDefaultRunLoopMode:默认状态,空闲状态

            UITrackingRunLoopMode:滑动状态

            NSRunLoopCommonModes:mode集合

    相关文章

      网友评论

          本文标题:RunLoop简单总结

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