美文网首页OC基础OC面试相关
iOS开发runloop以及使用场景

iOS开发runloop以及使用场景

作者: 心成则玲 | 来源:发表于2022-07-20 15:03 被阅读0次

1、什么是RunLoop?
可以理解为字面意思:Run表示运行,Loop表示循环,结合起来就是循环运行。
1.1、RunLoop实际上是一个对象,这个对象在循环中用来处理程序运行过程中出现的各种事件(比如说触摸事件、UI刷新事件、定时器事件、Selector事件),从而保持程序的持续运行。
1.2、RunLoop在没有事件处理的时候,会使线程进入睡眠模式,从而节省CPU资源,提高程序性能。

2、RunLoop相关类
2.1、CFRunLoopRef:代表RunLoop的对象
2.2、CFRunLoopModeRef:代表RunLoop的运行模式
2.3、CFRunLoopSourceRef:就是RunLoop输入源/事件源
2.4、CFRunLoopTimerRef:就是RunLoop定时源
2.5、CFRunLoopObserverRef:观察者,能够监听RunLoop的状态改变
5个类的相关关系:
一个RunLoop对象(CFRunLoopRef)中包含若干个运行模式(CFRunLoopModeRef)。而每一个运行模式下又包含若干个输入源(CFRunLoopSourceRef)、定时源(CFRunLoopTimeRef)、观察者(CFRunLoopObserverRef)
每次RunLoop启动时,只能指定其中一个运行模式(CFRunLoopModeRef),这个运行模式(CFRunLoopModeRef)被称作为当前运行模式(CurrentMode)。
如果需要切换运行模式(CFRunLoopModeRef),只能退出当前Loop,再重新指定一个运行模式(CFRunLoopTimerRef)、观察者(CFRunLoopObserverRef),让其互不影响。

3、RunLoop实战应用
3.1、子线程使用NSTimer需要加入到RunLoop中去
3.2、tableview的滚动时图片不加载
3.3、后台常驻线程,比如AFNetworking子线程一直等待服务器返回的结果
3.4、监听应用的卡顿

相关文章

网友评论

    本文标题:iOS开发runloop以及使用场景

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