博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
四个简单易用的demo,关于iOS定时器和延时的,非常好用。
阅读量:6713 次
发布时间:2019-06-25

本文共 2141 字,大约阅读时间需要 7 分钟。

 

1,延时执行(不可重复)

 

[objc] view plain copy/**  ** delay 不可重复  **/  - (void)timerMethodA  {      [self performSelector:@selector(methodAEvent)                 withObject:nil                 afterDelay:2.0f];//延时时间  }    - (void)methodAEvent  {      NSLog(@"-- method_A");  }

 

 

效果我直接截取控制台的日志了,就不做UI了。

 

2,用NSTimer执行定时和延时(可重复)

 

[objc] view plain copy/**  ** timer 可重复  **/  - (void)timerMethodB  {      _timer = [NSTimer scheduledTimerWithTimeInterval:1.0f  //间隔时间                                                target:self                                              selector:@selector(methodBEvnet)                                              userInfo:nil                                               repeats:YES];  }    - (void)methodBEvnet  {      count++;      NSLog(@"-- Method_B count: %d", count);            if (count >= 5) {          [_timer invalidate];    //重复5次,timer停止          NSLog(@"-- end");      }  }

 

 

 

 

3,用dispatch_source_set_timer执行定时(可重复)

 

[objc] view plain copy/**  ** dispatch_time 可重复  **/  - (void)timerMethodC  {      __block int i = 0;      CGFloat duration = 1.0f;   //间隔时间      dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);      dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);            dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, duration * NSEC_PER_SEC, 0);      dispatch_source_set_event_handler(timer, ^{                    i++;          if (i > 5) {              dispatch_source_cancel(timer);  //执行5次后停止              NSLog(@"-- end");          }else{              NSLog(@"-- Method_C i:%d", i);          }      });      dispatch_resume(timer);  }

 

 

 

 

4,用dispatch_after执行延时(不可重复)

 

[objc] view plain copy/**  ** dispatch_time 不可重复  **/  - (void)timerMethodD  {      CGFloat delayTime = 2.0f;   //延时时间      dispatch_time_t timer = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayTime *NSEC_PER_SEC));      dispatch_after(timer, dispatch_get_main_queue(), ^{          NSLog(@"-- Method_D time:%@", [NSDate date]);      });                                              }

 

 

 

 

文章最后奉上demo

转载于:https://www.cnblogs.com/henusyj-1314/p/8116976.html

你可能感兴趣的文章
MYSQL: mysqlbinlog读取二进制文件报错read_log_event()
查看>>
随机产生由特殊字符,大小写字母以及数字组成的字符串,且每种字符都至少出现一次...
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
java21:捕鱼达人
查看>>
Zabbix 服务端搭建
查看>>
Java - 一个单例
查看>>
学习JAVA 持续更新
查看>>
Spring propertyConfigurer类
查看>>
Linux系统分析工具之uptime,top(一)
查看>>
EIGRP之DUAL(扩散更新算法)
查看>>
cacti自定义数据收集脚本,创建Data Templates和Graph Templates
查看>>
对你同样重要的非技术贴,一封有效的求职信的具体写法
查看>>
在路由器里插入和删除ACL
查看>>
我的友情链接
查看>>
OpenStack从入门到放弃
查看>>
戴尔和EMC已经成为正式的竞争对手
查看>>
6425C-Lab12 管理DC(1)
查看>>
RocketMQ调研笔记
查看>>
maven 注册 jar
查看>>