前言
在开发过程中,我们有时会希望把一些操作封装起来延迟一段时间后再执行。本文列举了四种延时执行某html" target="_blank">函数的方法及其一些区别。假如延时1秒时间执行下面的方法。
- (void)delayMethod { NSLog(@"execute"); }
1.performSelector方法
这是iOS中常用的一种延迟执行方法.
//不带参数 [self performSelector:@selector(delayDo:) withObject:nil afterDelay:1.0f]; //带参数 [self performSelector:@selector(delayDo:) withObject:@"abc" afterDelay:1.0f];
此方式要求必须在主线程中执行,否则无效。
是一种非阻塞的执行方式,
暂时未找到取消执行的方法。
2.定时器:NSTimer
采用计时器的延迟方法
[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(delayMethod) userInfo:nil repeats:NO];
此方式要求必须在主线程中执行,否则无效。
是一种非阻塞的执行方式,
可以通过NSTimer类的- (void)invalidate;取消执行。
3. sleep方式
[NSThread sleepForTimeInterval:1.0f]; [self delayMethod];
此方式在主线程和子线程中均可执行。
是一种阻塞的执行方式,建方放到子线程中,以免卡住界面
没有找到取消执行的方法。
最好不要在主线程中使用,否则会卡住界面.
4.GCD方式
//在主线程延迟执行 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self delayDo:@"GCD"]; }); //在子线程延迟执行 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [self delayDo:@"Global-GCD"]; });
此方式在可以在参数中选择执行的线程。
是一种非阻塞的执行方式,
没有找到取消执行的方法。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。
本文向大家介绍对比分析iOS延迟执行的4种方式,包括了对比分析iOS延迟执行的4种方式的使用技巧和注意事项,需要的朋友参考一下 最近学习了延迟执行的几种方法,分享一下: 1.performSelector(NSObject)方法 2.NSTimer方法 3.GCD方法 4.sleep(NSThread)方法 一、performSelector方法: 1.特点: 此方式要求必须在主线程中执行,
本文向大家介绍浅析Python 中几种字符串格式化方法及其比较,包括了浅析Python 中几种字符串格式化方法及其比较的使用技巧和注意事项,需要的朋友参考一下 起步 在 Python 中,提供了很多种字符串格式化的方式,分别是 %-formatting、str.format 和 f-string 。本文将比较这几种格式化方法。 %- 格式化 这种格式化方式来自于 C 语言风格的 sprintf 形
本文向大家介绍iOS中从网络获取数据的几种方法的比较,包括了iOS中从网络获取数据的几种方法的比较的使用技巧和注意事项,需要的朋友参考一下 IOS中获取网络数据一般有三种:1、NSURLCondition(已过时) 2、NSURLSession 3、三方库AFNetWorking NSURLSession 是苹果对NSULRCondition的替代品,NSURLSession比NSURLC
本文向大家介绍Javascript编程中几种继承方式比较分析,包括了Javascript编程中几种继承方式比较分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了Javascript编程中几种继承方式比较。分享给大家供大家参考,具体如下: 开篇 从'严格'意义上说,javascript并不是一门真正的面向对象语言。这种说法原因一般都是觉得javascript作为一门弱类型语言与类似java
本文向大家介绍Javascript中的几种URL编码方法比较,包括了Javascript中的几种URL编码方法比较的使用技巧和注意事项,需要的朋友参考一下 javascript中存在几种对URL字符串进行编码的方法:escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起的作用各不相同。 escape() 方法: 采用ISO Latin字符集对
本文向大家介绍mysql命令行中执行sql的几种方式总结,包括了mysql命令行中执行sql的几种方式总结的使用技巧和注意事项,需要的朋友参考一下 1.直接输入sql执行 MySQL> select now(); +---------------------+ | now() | +---------------------+ | 2013-09-18 13:55:45 | +----------