当前位置: 首页 > 编程笔记 >

iOS中延时执行的几种方式比较及汇总

马正初
2023-03-14
本文向大家介绍iOS中延时执行的几种方式比较及汇总,包括了iOS中延时执行的几种方式比较及汇总的使用技巧和注意事项,需要的朋友参考一下

前言

在开发过程中,我们有时会希望把一些操作封装起来延迟一段时间后再执行。本文列举了四种延时执行某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 | +----------