purejf面试题iOS开发

iOS基础面试题之RunLoop篇

2016-11-16  本文已影响2319人  Stars木木

RunLoop是什么,有什么作用,如何获取?

RunLoop的原理

RunLoop的原理

RunLoop接收几种输入源,系统默认定义了几种模式?

RunLoop模式的原理和使用注意点?

RunLoopMode

RunLoop和线程有什么关系

NSRunLoop *loop = [NSRunLoop currentRunLoop];
[loop run];

NSTimer和RunLoop的关系?

  NSTimer *timer = [NSTimer timerWithTimeInterval:1.f target:self selector:@selector(update) userInfo:nil repeats:YES];
    [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
[NSTimer scheduledTimerWithTimeInterval:1.f target:self selector:@selector(update) userInfo:nil repeats:YES];

NSTimer准确吗,如果不准确,如何设计一个准确的timer?

TableView/ScrollView/CollectionView滚动时为什么NSTimer会停止?

如果NSTimer在分线程中创建,会发生什么,应该注意什么?

在异步线程中下载很多图片,如果失败了,该如何处理?请结合RunLoop来谈谈解决方案

如果程序启动就需要执行一个耗时操作,你会怎么做?

runloop与autoreleasepool的关系

如果在分线程中启动一个异步请求,会有什么问题?

判断其是否请求结束,如果未结束,要保持当前线程一直启动,直到结束

while(!isFinish)
     {
       [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
     }

程序启动时,runloop是如何工作的?如果程序启动就需要执行一个耗时操作,你会怎么做?

程序启动时,系统默认创建并启动主线程的runloop,runloop会默认创建两个Observe来进行监听runloop的进出和睡眠,有事情的时候就去做,没事的休眠

(线程(创建)-->runloop将进入-->最高优先级OB创建释放池-->runloop将睡-->最低优先级OB销毁旧池创建新池-->runloop将退出-->最低优先级OB销毁新池-->线程(销毁))

线程刚创建时并没有runloop,如果你不主动去获取,那么一直都不会有。

耗时操作可以放在分线程中进行,结束后回到主线程

仅供木木学习,以及有需要的伙伴们阅读~可转载,不可复制粘贴哟~

上一篇 下一篇

猜你喜欢

热点阅读