[iOS RunLoop初识](一)

前言

RunLoop是iOS/OS开发中比较基础的一个概念,在苹果开发中用在事件处理,延迟加载,屏幕刷新等功能的处理,其实抛开语言,RunLoop是一个的架构模式,也就是RunLoop不仅仅局限于iOS开发。

RunLoop的概念

一般来讲,一个线程一次只能执行一个任务,执行完成后线程就会退出。如果我们需要一个机制,让线程能随时处理事件但并不退出

RunLoop与线程

每条线程都有唯一的一个与之对应的RunLoop对象, 主线程的RunLoop已经自动创建好了,子线程的RunLoop需要主动创建RunLoop在第一次获取时创建,在线程结束时销毁.

为什么要使用runloop

1. 使程序一直运行接受用户输入 
2. 决定程序在何时应该处理哪些Event 
3. 调用解耦(对于编程经验为0的完全没搞懂这个意思,解释为Message Queue) 
4. 节省CPU时间

NSRunLoop 和 CFRunLoopRef

CFRunLoopRef 是在 CoreFoundation 框架内的,它提供了纯 C 函数的 API,所有这些 API 都是线程安全的。

NSRunLoop 是基于 CFRunLoopRef 的封装,提供了面向对象的 API,但是这些 API 不是线程安全的。

CFRunLoopRef 的代码是开源的 :这里下载 ` http://opensource.apple.com/tarballs/CF/CF-855.17.tar.gz`整个 CoreFoundation 的源码

RunLoop的内部实现原理

实际上 RunLoop 就是一个函数,其内部是一个 do-while 循环。当你调用 CFRunLoopRun() 时,线程就会一直停留在这个循环里;直到超时或被手动停止,该函数才会返回。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值