iOS开发——有关RunLoop

本文详细解析了RunLoop的概念、线程关系、对外接口、模式、内部逻辑和苹果如何利用RunLoop实现自动释放池、事件响应等功能。RunLoops是线程管理和事件处理的关键,与线程一一对应,通过CFRunLoopSourceRef和CFRunLoopTimerRef等接口处理事件。苹果在主线程RunLoop中注册Observer以处理AutoreleasePool、事件响应和定时器等任务。
摘要由CSDN通过智能技术生成

深入理解RunLoop

一篇很深入很深入的博文:深入理解RunLoop

苹果利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。

RunLoop 的概念

RunLoop 实际上就是一个对象,这个对象管理了其需要处理的事件和消息,并提供了一个入口函数来执行Event Loop 的逻辑(让线程能随时处理事件但并不退出,在没有处理消息时休眠以避免资源占用、在有消息到来时立刻被唤醒)

RunLoop 与线程的关系

CFRunLoop 是基于 pthread 来管理的
线程和 RunLoop 之间是一一对应的,线程刚创建时并没有 RunLoop,如果你不主动获取,那它一直都不会有。

RunLoop 对外的接口

在 CoreFoundation 里面关于 RunLoop 有5个类:

  • CFRunLoopRef
  • CFRunLoopModeRef(没有暴露)
  • CFRunLoopSourceRef
  • CFRunLoopTimerRef
  • CFRunLoopObserverRef

RunLoop 的 Mode

你只能通过 mode name 来操作内部的 mode,当你传入一个新的 mode name 但 RunLoop 内部没有对应 mode 时,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值