RunLoop的简单讲解

runloop:运行循环。跑圈。基本作用:保持程序的基本运行。处理app的各种事件,比如触摸事件,定时器事件,selector事件。

iOS 中有两套API来访问和使用runloop

1.Founfdation。---->NSrunloop

2.Core Fundation --->CFRunloopref

NSrunloop 和 CFRunloopref 都代表runloop,NSrunloop 是基于CFRunloopref的一层oc包装。

unloop 和线程的关系:

runloop 和线程: 每条线程都有唯一一个与之对应的runloop对象,主线程的runloop对象已经自动创建好了,子线程的runloop需要手动去创建。

runloop在第一次获取时创建,线程结束时销毁。

获得runloop 对象。

[NSRunloop CurrentRunLoop];获取当前线程的runloop对象

[NSRunloop mainRunloop]获取主线程的runloop对象


RunLoop的简单讲解_第1张图片
1.coreFfoundation获取runloop

runloop的相关类

core fundation 中有5个类。

CFRunloopRef

CFRunloopModeRef(运行模式)

#代表runloop的运行模式,一个runloop包含若干个mode,每个mode又包含若干个source/timer/observer

#系统默认5个mode

1.KCFRunloopDefaultMode默认mode,通常主线程在这个mode下运行

2.UITrackingRunloopMode界面追踪mode,用于scroller追踪触摸滑动,保证界面滑动不受其他影响。

3.GSEventReceiveRunloopMode 接受系统事件的内部mode,通常用不到

4.NSRunLoopCommonModes = NSDefaultRunLoopMode + UITrackingRunLoopMode

//占用,标签,凡是添加到NSRunLoopCommonModes中的事件都会被同时添加到打上commmon标签的运行模式上

.......

CFRunloopSourceRef

CFRunloopTimeRef

# 在runloop中有多个运行模式,但是runloop只能选择一种模式运行,这个mode被称为 currentmode

model中至少要有一个timer或者是source,


RunLoop的简单讲解_第2张图片
2.获取runloop对象


RunLoop的简单讲解_第3张图片
3.

你可能感兴趣的:(RunLoop的简单讲解)