对于Runloop的理解

出去面试时经常会被问到,项目中有没有用到Runloop,说一下对于Runloop的理解。经过百度我初步理解:
在程序运行的过程中,当对于某个事件的循环操作时,如果没有RunLoop,当循环结束就会退出了,但是如果有RunLoop就会一直操作,因为RunLoop时时等待用户的输入指令,当它接收到时就会唤醒程序继续循环操作。
它的基本作用是:
1,保持程序一直运行
2,处理App的各种事项(NStimer,触摸事件,tableview加载大量图片的时候)
3,节省CPU资源,提高app性能

对于NStimer的使用:比如当我们在一个界面中,如果有scrollview和NStimer,当我们进行拖动scrollview时,NStimer是不会计时的,只有当停止拖动时才会重新计时,因为对于NStimer而言,它默认的RunLoop对应的model是NSDefaultRunLoopMode,那么当拖动时,RunLoop就会自动切换成UITrackingRunLoopMode,NSTimer 停止,当停止拖动时就会就会切换NSDefaultRunLoopMode回来,NSTimer运行。那么如果我们把NSTimer的model设置为NSRunLoopCommonModes,就可以解决这个问题。

发现一篇非常不错的文章(参考):https://www.jianshu.com/p/de752066d0ad

你可能感兴趣的:(定义)