|
runloop作用
即使你不显式的用[CATransaction begin]开始一次事务,任何在一次run loop循环中属性的改变都会被集中起来,然后做一次0.25秒的动画。
“run loop是iOS负责收集用户输入,处理定时器或者网络事件并且重新绘制屏幕的东西”
1.使用户一直输出
2.决定程序应该处理那些event
3.调用解耦(消息队列)
4.节省CPU时间
Foundation NSRunLoop
Core Foundation CFRunLoop
// 跟RunLoop 有关的
NSTimer UIEvent Autorelease
CFRunLoopSource
Source是RunLoop的数据源抽象类(protocol)
1.Source0:处理App内部时间,App自己负责管理(触发)
如UIEvent,CFSocket
2.Source1:有RunLoop和内核管理,Mach port驱动,如CFMachPort, CFMessagePort
CFRunLoopObservertypedef CF_OPTIONS(CFOptionFlags, CFRunLoopActivity) {
两次跑圈中间就会 autorelease 一下释放
CFRunLoopMode
*RunLoop在同一段时间只能且必须在一种特定Mode下Run
更换Mode时,需要停止当前Loop然后重启新Loop
Mode是iOS App滑动顺畅的关键 |
|