对于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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值