曙海教学优势
曙海培训的课程培养了大批受企业欢迎的工程师。大批企业和曙海
建立了良好的合作关系。曙海培训的课程在业内有着响亮的知名度。
本课程,秉承二十一年积累的教学品质,以项目实现为导向,老师将会与您分享设计的全流程以及工具的综合使用经验、技巧。
一:什么是RunLoop
(1)从字面意思看,运行循环、跑圈。
(2)保持程序持续运行,处理App中的各类事件包括触摸事件、定时器事件、Selector事件。
(3)节省CPU资源,提高程序的性能,该做事的时候做事,该休息的时候休息。
二:RunLoop与线程
(1)每条线程都有唯一的一个与之对应的RunLoop对象。
(2)主线程的RunLoop已经自动创建好了,子线程的RunLoop需要主动创建。
(3)RunLoop在第一次获取时创建,在线程结束时候销毁。
三:RunLoop相关类
Core Foundation中关于RunLoop的5个类
1:CFRunLoopRef
2:CFRunLoopModeRef ,CFRunLoopModeRef代表RunLoop的运行模式,一个RunLoop包含若干个运行模式,即一个RunLoop包含若干个Mode,每个Mode又包含若干个Source/Timer/Observer,每次RunLoop启动时,只能指定其中一个Mode,这个Mode被称作CurrentMode,如果需要切换Mode,只能退出Loop,再重新指定一个Mode进入。系统默认注册了5个Mode:
(1)kCFRunLoopDefaultMode:App的默认的Mode,通常线程是在这个Mode下运行
(2)UITrackingRunLoopMode:界面跟踪Mode,用于ScrollView追踪触摸滑动,保证界面滑动时不受其它Mode影响
(3)UIInitializationRunLoopMode:在刚启动App时进入的第一个Mode,启动完成后就不再使用
(4)GSEventReceiveRunLoopMode:接收系统事件的内部Mode,通常用不到。
(5)kCFRunLoopCommonMode:这是一种占位用的Mode,不是一种真正的Mode。
3:CFRunLoopTimerRef
(1)CFRunLoopTimerRef是基于时间的触发器。
(2)基本上说的就是NSTimer,它会受到runloop的Mode的影响。
(3)GCD的定时器不受RunLoop的mode的影响。