一、RunLoop
RunLoop:运行循环。主要作用:(1)保持程序的持续运行;(2)处理App中的各种事件(比如触摸事件、定时器事件、Selector事件);
在UIApplicationMain函数内部就启动了一个RunLoop,所以UIApplicationMain函数一直没有返回,保持了程序的持续运行,这个默认启动的RunLoop是跟主线程相关联。
1、RunLoop与线程
(1)每条线程都有唯一的一个与之对应的RunLoop对象
(2)主线程的RunLoop已经自动创建好了,子线程的RunLoop需要主动创建
(3)RunLoop在第一次获取时创建,在线程结束时销毁
2、获得RunLoop对象的方式
iOS中有2套API来访问和使用RunLoop
1.Foundation : NSRunLoop
2.CoreFoundation : CFRunLoopRef(NSRunLoop和CFRunLoopRef都代表着RunLoop对象)
Foundation
[NSRunLoop currentRunLoop];// 获得当前线程的RunLoop对象[NSRunLoop mainRunLoop];// 获得主线程的RunLoop对象
CoreFoundation
CFRunLoopGetCurrent();// 获得当前线程的RunLoop对象
CFRunLoopGetMain();// 获得主线程的RunLoop对象