IOS中的几种比较常见的延时方法的介绍及各自优缺点
来源:互联网 发布:一键安装java环境 编辑:程序博客网 时间:2024/06/06 01:29
- (void)delayMethod { NSLog(@"execute"); }1.performSelector方法[self performSelector:@selector(delayMethod) withObject:nil afterDelay:1.0f];具体代码:- (void)viewDidLoad { [super viewDidLoad]; dispatch_async(dispatch_get_main_queue(), ^{ [self performSelector:@selector(delayMethod) withObject:nil afterDelay:1]; });; NSLog(@"ccdvvv");}-(void)delayMethod{ NSLog(@"第一种延时函数");}运行结果: 2016-03-03 11:33:47.612 延时函数的使用[2004:92977] ccdvvv 2016-03-03 11:33:47.620 延时函数的使用[2004:92977] 第一种延时函数 我们可以看到无论怎么设置延时时间,ccdvvv总是先于delayMethod打印出来,这个跟Block方法的调用机制有关。这种方式的延时只是针对这个方法本身的函数而言的。
此方式要求必须在主线程中执行,否则无效。
是一种非阻塞的执行方式,
暂时未找到取消执行的方法。
2.定时器:NSTimer
[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(delayMethod) userInfo:nil repeats:NO];具体代码:- (void)viewDidLoad { [super viewDidLoad]; [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(delayMethod) userInfo:nil repeats:NO]; NSLog(@"1");}-(void)delayMethod{ NSLog(@"2");}运行结果:2016-03-03 11:41:12.738 延时函数的使用[2036:97927] 12016-03-03 11:41:13.742 延时函数的使用[2036:97927] 2这种方式的延时也只是针对这个方法本身的函数而言的。
此方式要求必须在主线程中执行,否则无效。
是一种非阻塞的执行方式,
可以通过NSTimer类的- (void)invalidate;取消执行。
- sleep方式
[NSThread sleepForTimeInterval:1.0f]; [self delayMethod];具体代码:- (void)viewDidLoad { [super viewDidLoad]; [NSThread sleepForTimeInterval:2]; [self delayMethod]; NSLog(@"1");}-(void)delayMethod{ NSLog(@"2");}运行结果:2016-03-03 11:43:12.568 延时函数的使用[2066:99923] 22016-03-03 11:43:12.568 延时函数的使用[2066:99923] 1这个函数可以实现延时,可以延时多少时间再去执行某一个函数,也就是让程序处于类似于休眠状态,时间到了自动 去执行下面的方法。
此方式在主线程和子线程中均可执行。
是一种阻塞的执行方式,建方放到子线程中,以免卡住界面
没有找到取消执行的方法。
4.GCD方式
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self delayMethod]; }); NSLog(@"1");}-(void)delayMethod{ NSLog(@"2");}运行结果:2016-03-03 11:48:33.244 延时函数的使用[2098:103294] 12016-03-03 11:48:35.437 延时函数的使用[2098:103294] 2
此方式在可以在参数中选择执行的线程。
是一种非阻塞的执行方式,
没有找到取消执行的方法。
0 0
- IOS中的几种比较常见的延时方法的介绍及各自优缺点
- IOS中的几种延时方法介绍
- asp.net中常用的几种页面间传递参数的方法,及各自优缺点
- Erlang gen_server实现定时器(interval)的几种方法及各自的优缺点?
- [Erlang09]Erlang gen_server实现定时器(interval)的几种方法及各自的优缺点?
- 清除浮动的几种方法,各自的优缺点
- 遍历Map的几种方法及优缺点比较
- Java 延时常见的几种方法
- Java 延时常见的几种方法
- Java 延时常见的几种方法
- iOS延时执行的几种方法
- iOS 延时的几种方法
- 几种典型的 iOS 应用界面的交互框架各自的优缺点是什么?
- 几种典型的 iOS 应用界面的交互框架各自的优缺点
- 几种典型的 iOS 应用界面的交互框架各自的优缺点是什么?
- iOS开发 -- 延时执行某个方法的几种方式的比较和汇总
- IOS中延时执行的几种方式的比较
- IOS延时执行的几种方式比较
- 第三方分享的部分准备知识
- android大讲堂——listview详解
- URL中带加号的处理
- Java设计模式——原型模式
- linux sed指令的替换操作
- IOS中的几种比较常见的延时方法的介绍及各自优缺点
- SCOI2003【严格n元树】
- Android gradle配置
- 【vijos】P1911 珠心算测验
- ios常用的语法大全
- #pragma weak
- PIC C语言编程_PICC中变量修饰关键词
- 去除多余cell的线
- c 字符串函数