专栏首页ios 技术积累iOS NSTimer 什么时候需要使用NSRunLoopCommonModes

iOS NSTimer 什么时候需要使用NSRunLoopCommonModes

当使用NSTimer的scheduledTimerWithTimeInterval方法时。此时Timer会被加入到当前线程的Run Loop中,且模式是默认的NSDefaultRunLoopMode。而如果当前线程就是主线程(UI线程时),某些UI事件,比如UIScrollView的拖动操作,会将Run Loop切换成UITrackingRunLoopMode模式,在这个过程中,默认的NSDefaultRunLoopMode模式中注册的事件是不会被执行的。也就是说此时使用scheduledTimerWithTimeInterval添加到Run Loop中的Timer就不会执行。

所以为了设置一个不被UI线程干扰的Timer,我们需要手动创建一个Timer,然后使用NSRunLoop的addTimer:forMode:方法来把Timer按照指定模式加入到Run Loop中。这里使用的模式是:NSRunLoopCommonModes,这个模式等效于NSDefaultRunLoopMode和UITrackingRunLoopMode的结合。

比如滑动UIScrollView的时候,NSTimer的处理时间根本没有调用,当松手的时候,又执行了。 原因:当滑动UIScrollView的时候,RunLoop切换成UITrackingRunLoopMode模式,而NSTimer默认注册NSDefaultRunLoopMode模式,所以拖动时Timer不执行。

使用以下方法滑动是没有影响的。

NSTimer *timer=[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(Handlete) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java 重写(Override)与重载(Overload)总结

    重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根...

    赵哥窟
  • Flutter mainAxisAlignment和crossAxisAlignment

    MainAxisAlignment(主轴)和CrossAxisAlignment(交叉轴)常用于Row和Column控件中,主要是用来控制子控件排列的位置,并可...

    赵哥窟
  • Flutter Wrap 组件

    runAlignment:run的对齐方式。run可以理解为新的行或者列,如果是水平方向布局的话,run可以理解为新的一行。

    赵哥窟
  • 结对测试算法性能优化(用例设计层面)

    比如某接口共18个参数,每个参数均可为空,其中8个只需要单个值,10个为多选项,需要多个值。

    dongfanger
  • 西门子万人裁员背后的思考 :程序员应该怎么办?

    在中国一线城市,房贷支出占据了大部分人收入的50%甚至以上,工资收入占据了绝大多数人收入的80%。

    老九君
  • 深度学习: 目标检测算法 效果对比

    使用selective search方法先产生region proposals,再使用浅层CNN网络进行特征提取,最后使用svm进行分类。这篇论文里提及的一个点...

    JNingWei
  • EasyUI 创建 CRUD 应用

    数据收集并妥善管理数据是网络应用共同的必要。CRUD 允许我们生成页面列表,并编辑数据库记录。本教程将向你演示如何使用 jQuery EasyUI 框架实现一个...

    java达人
  • 深入浅出 RunLoop(二):数据结构

    CFRunLoopObserverRef中的_activities用来保存RunLoop的活动状态。当RunLoop的状态发生改变时,通过回调_callout通...

    师大小海腾
  • 我们距离云还有多远?

    在接受我们调查的4000多家中小企业中,51%的企业实际上还不知道云是什么 ,还没有听说过云;大约超过30%的企业听说过云计算;真正使用云的企业只有19%。 —...

    静一
  • 三大云部署方式随时扩容应对互联网流量变化

    计算已从一个新概念发展成为业界主流市场。业界对云计算未来的期望较高。供应商如何才能最好地保护云计算环境?攻击者倾向于遵循相似的模式,并使用在传统环境中相同方法。...

    静一

扫码关注云+社区

领取腾讯云代金券