runloop,线程影响nstimer掉用的原因和解决

根据之前的经验总结,

runloop,线程,滑动scrollerview 都会影响nastimer的掉用。

讲述着四者之间的影响,说先从runloop说起,runloop是消息机制,iOS中的消息机制就是runloop,他就是循环监测消息事件,举个例子说就是,当我们点击手机屏幕时,手机会监测到我们的操作事件,对这个监测的封装就是runloop,他是对iOS底层复杂的事件消息监测的封装,当我们不点击时,runloop处于睡眠状态,当我们点击时,runloop时苏醒的状态,所以我们用runloop时其中有一个中情况就是,用的时候响应,不用的时候睡眠。

nstimer是iOS的定时器,他会自动加到当前的runloop中,每一个线程都有一个runloop,由于我们自己创建的分线程中的runloop是睡眠状态,所以在分线程中的nstimer是不会掉用的。所以我们一般是将nstimer写到主线程中,因为当我们的app启动时,主线程已经开始,主线程中的runloop已经苏醒,能监测到我们的操作,所以nstimer写到主线程中是可以正常掉用的,要是非得写到分线程中,除非让分线程中的runloop也是苏醒状态,iOS中两个线程都 处于苏醒状态,对手机性能cpu消耗会很大,电池也会很大消耗,手机寿命也会减少。在项目设计时,一般不应该存在这样的现象。

当我们滑动scrollerview或者时tableview时,nastier也会停止,这个原因简单,是因为当我们滑动的时候时,nastimer的mode会时NSDefaultRunLoopMode,我们手动调成NSRunLoopCommonModes即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值