多线程Runloop基本介绍
2016-09-23 本文已影响21人
lyonLiu
Runloop也称运行循环
、跑圈
RunLoop基本作用
1.保持程序的持续运行
2.处理App中的各种时间(比如触摸事件,定时器事件,selector事件)
3.节省CPU资源,提高程序性能该做事时做事,该休息时休息
如果没有RunLoop
int main(int argc,char *argv[]){
NSlog(@"execute main function");-------程序开 始
return 0;------程序结束
}
如果有Runloop
int main(int argc,char *argv[]){
BOOL running = YES;
do{
//执行各种任务,处理各种事件
}while(running);
return 0;------程序结束
}
由于OC Main函数里面启动了RunLoop,所以程序并不会马上退出,会一直保持持续运行状态.
UIApplication Main函数内部启动了一个RunLoop,所以函数一直没有返回,保持持续运行状态
这个默认启动的RunLoop是跟主线程相关联的.
RunLoop对象
iOS中有2套API来访问和使用RunLoop,如下
Foundation
框架中的NSRunLoop
对象
Core Foundation
框架中的CFRunloopRef
NSRunLoop
和CFRunloopRef
都代表着RunLoop对象
NSRunLoop
是基于CFRunloopRef
的一层OC包装,所以要了解RunLoop内部结构,需要多研究CFRunLoopRef
层面的API(Core Foundation
)