底层15:RunLoop面试题

2020-09-07  本文已影响0人  张无奈

面试题:讲讲RunLoop,项目中有用到吗?

保持程序的持续运行;

处理App中的各种事件(eg:触摸事件,定时器事件);

节省CPU资源,提高程序性能(该做事的时候做事,该休息的时候休息)。

应用范畴:定时器(Timer)、PerformSelector、GCD Async Main Queue、事件响应、手势识别、界面刷新、网络请求、AutoreleasePool。

面试题:runloop内部实现逻辑?

面试题:runloop和线程的关系?

一对一的关系。

面试题:timer与runloop的关系?

timer运行在runloop里面。

面试题:程序中添加每3秒响应一次的NSTimer,当拖动tableView时timer可能无法响应要怎么解决?

将mode改成kCFRunLoopCommonModes, 它默认包括kCFRunLoopDefaultMode和UITrackingRunLoopMode.

面试题:runloop是怎么响应用户操作的,具体流程是什么样的?

先由Source1捕捉触摸事件,再有Source0去处理事件。

通知Observers,进入Loop、即将Timers、Sources、blocks;

处理Source0;

如果存在Source1,通知观察者,结束休眠去处理source1,处理blocks;

根据前面处理的结果,决定如何操作。

面试题:说说runloop的几种状态?

kCFRunLoopEntry: 即将进入Loop

kCFRunLoopBeforeTimer: 即将处理Timer

kCFRunLoopBeforeSources: 即将处理Source

kCFRunLoopBeforeWaiting:即将进入休眠

kCFRunLoopAfterWaiting:刚从休眠中唤醒

kCFRunLoopExit:即将推出Loop

kCFRunLoopAllActivities: 

RunLoop在实际开发中的应用:

控制线程生命周期(线程保活)、

解决NSTimer在滑动时停止工作的问题

监控应用卡顿

性能优化

上一篇 下一篇

猜你喜欢

热点阅读