错误日志博客

多线程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

NSRunLoopCFRunloopRef都代表着RunLoop对象

NSRunLoop是基于CFRunloopRef的一层OC包装,所以要了解RunLoop内部结构,需要多研究CFRunLoopRef层面的API(Core Foundation

RunLoop参考资料


RunLoop苹果官方文档
CFCFRunLoopRef开源文档

上一篇 下一篇

猜你喜欢

热点阅读