RunLoop相关问题

2019-01-07  本文已影响11人  当优秀成为习惯

什么是RunLoop?

RunLoop顾名思义是运行时循环,在程序运行过程中循环做一些事情。
当有响应事件比如点击,定时器,滑动等等,Runloop就会响应。当没有事件处理的时候,RunLoop就会进入睡眠模式,这样就极大的降低了CPU资源的损耗,提高了程序的性能。

如果没有RunLoop,执行完打印就会退出程序

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
    }
    return 0;
}

问题:项目中有用到Runloop

RunLoop应用范畴

RunLoop对象

ios有两套API来访问和使用RunLoop

获取Runloop对象相应的方法
[NSRunLoop mainRunLoop]; //获取主runloop
[NSRunLoop currentRunLoop];// 获取当前runloop对象
runloop在项目中的应用场景?

int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

应用程序的入口创建了runloop对象,这也保证了程序能够一直运行。
定时器

  [[NSRunLoop currentRunLoop] addTimer:[NSTimer timerWithTimeInterval:2 repeats:YES block:nil] forMode:NSRunLoopCommonModes];

Runloop与线程

Runloop与线程一对一的关系。Runloop保存在一个全局的字典当中。其中线程是keyrunloopvalue

上一篇 下一篇

猜你喜欢

热点阅读