曙海教学优势
免费报名电话:4008699035。线下/线上/上门都可以,课程支持定制。秉承21年教研经验,本课程以项目案例为依托,面向企事业单位实际需求,讲师将会与您分享设计的全流程以及工具的综合使用技巧及项目经验。
我们的课程培养了大批受欢迎的工程师。大批企业与我们
建立了良好的合作关系,合作企业三十多万家。我们的课程得到广大企事业单位广泛认可与赞赏。
一:什么是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的影响。