美文网首页
延时任务

延时任务

作者: 每日总结 | 来源:发表于2016-06-23 21:45 被阅读58次
//1.
[self performSelector:@selector(hideHUD) withObject:nil afterDelay:1.5];
//2.
dispatch_after(dispatch_time(DISPATCH_TIME_NOW), (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    self.hud.alpha = 0.0;
});
//3.
[NSTimer scheduledTimerWithTimeInterval:1.5  target:self selector:@selector(hideHUD) userInfo:nil repeats:NO];

注意

1.performSelector方法和NSTimer方法都是在主线程中进行的,原理是利用runloop实现的。
runloop是一个死循环,一般只有主线程中的runloop是激活的,所以在子线程中performSelector方法和NSTimer方法都不会生效。
而GCD的dispatch_after方法就不会有这个问题。
2.NSTimer在使用时要注意target的对象是强引用对象。
我们一般使用NSTimer的时候喜欢将实例设置为ViewController的属性,这样如果我们不在view消失时将NSTimer失效掉,会导致ViewController无法释放。
我目前使用的方法是在viewWillAppear方法中对NSTimer实例进行初始化设置,然后在viewWillDisappear方法中将NSTimer实例进行失效处理(invalidate)并置nil。
如果有更好的方法还望在评论中告知。

相关文章

  • 延时任务

    场景: 订单下单之后30分钟后,如果用户没有付钱,则系统自动取消订单 方案对比: 参考: https://blog...

  • 延时任务

    注意 1.performSelector方法和NSTimer方法都是在主线程中进行的,原理是利用runloop实现...

  • 【celery】任务重复执行

    问题 celery定时任务里面启用延时任务,出现延时任务重复执行的问题。如:定时任务: project_statu...

  • 关于NSTimer

    关于NSTimer 在工作中经常会做一些延时任务,或者周期性任务,有时候也需要对取消延时任务操作。 延时任务一般有...

  • 完整实现-通过DelayQueue实现延时任务

    实现延时任务有很多的方法,网上关于延时任务的实现的文章已经不少了。比如:实现延时任务的10种方法等等。但是这些文章...

  • 第11章 @Scheduled定时任务

    系统运行中常常会遇到定时任务或延时任务,SpringBoot中提供了@Scheduled注解对定时或延时任务的声明...

  • 延时任务队列的原理与实现总结

    延时任务有别于定式任务,定式任务往往是固定周期的,有明确的触发时间。而延时任务一般没有固定的开始时间,它常常是由一...

  • 2020-08-23 实现延时任务的 4 种实现方案

    实现延时任务的 4 种实现方案

  • Android 延迟执行 三种方式

    1.使用线程,利用线程休眠达到延时效果。 2.使用handler延时执行方法。 3.使用定时器Timer执行延时任务。

  • 优雅实现延时任务之Redis篇

    什么是延时任务 延时任务,顾名思义,就是延迟一段时间后才执行的任务。举个例子,假设我们有个发布资讯的功能,运营需要...

网友评论

      本文标题:延时任务

      本文链接:https://www.haomeiwen.com/subject/xdkodttx.html