找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 255|回复: 0

RunLoop,iOS黑科技

[复制链接]

98

主题

237

回帖

705

积分

高级会员

积分
705
发表于 2017-10-10 18:11:00 | 显示全部楼层 |阅读模式
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滑动顺畅的关键
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|芝加哥华人服务中心

GMT-5, 2024-11-30 14:29 , Processed in 0.079164 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表