2019独角兽企业重金招聘Python工程师标准>>>

IOS中延时执行的几种方式的比较和汇总

本文列举了四种延时执行某函数的方法及其一些区别。假如延时1秒时间执行下面的方法。

- (void)delayMethod { NSLog(@"execute"); }

1.performSelector方法

[self performSelector:@selector(delayMethod) withObject:nil 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方式

double delayInSeconds = 1.0;
 __block ViewController* bself = self;
 dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
 [bself delayMethod]; });

此方式在可以在参数中选择执行的线程。
是一种非阻塞的执行方式,
没有找到取消执行的方法。

转载于:https://my.oschina.net/u/2329800/blog/483612

IOS中延时执行的几种方式的比较和汇总相关推荐

  1. IOS中延时执行的几种方式的比较

    本文列举了四种延时执行某函数的方法及其一些区别.假如延时1秒时间执行下面的方法. - (void)delayMethod { NSLog(@"execute"); } 1.perf ...

  2. iOS:延时执行的三种方式

    延时执行的三种方式:performSelectorXXX方法.GCD中延时函数.创建定时器 第一种方式:NSObject分类当中的方法,延迟一段时间调用某一个方法 @interface NSObjec ...

  3. iOS中延时执行(睡眠)的几种方法

    1. 最直接的方法: [self performSelector:@selector(deleyMethod) withObject:nil afterDelay:1.0]; 此方式要求必须在主线程中 ...

  4. iOS中收起键盘的几种方式

    在使用UITextField的时候,我们会和键盘打交道,有时候要求弹出来的键盘类型是数字键盘,有时候要求我们弹出来的是一般的键盘.当我们输入完成的时候,就涉及到在上什么时候收回键盘的事情了.收回键盘分 ...

  5. php怎么异步执行,php中异步执行的四种方式

    一.使用Ajax 与 img 标记 原理:服务器返回的html中插入Ajax 代码或 img 标记,img的src为需要执行的程序. 优点:实现简单,服务端无需执行任何调用. 缺点:在执行期间,浏览器 ...

  6. sh执行文件 参数传递_详解shell中脚本参数传递的两种方式

    方式一:$0,$1,$2.. 采用$0,$1,$2..等方式获取脚本命令行传入的参数,值得注意的是,$0获取到的是脚本路径以及脚本名,后面按顺序获取参数,当参数超过10个时(包括10个),需要使用${ ...

  7. ios多线程开发的常用三种方式

    ios多线程开发的常用三种方式 1.NSThread 2.NSOperationQueue 3.GCD NSThread: 创建方式主要有两种: [NSThread detachNewThreadSe ...

  8. Android中播放音乐的几种方式

    Android中播放音乐的几种方式 前言 前几天一直在研究RxJava2,也写了记录了几篇博客,但因为工作任务原因,需要研究音频相关的知识,暂时放下Rxjava,本文的demo中,MediaPalye ...

  9. 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    贺邦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的: 使用库函数 ...

  10. es重建字段类型_关于elasticsearch中更新数据的几种方式

    作为一个成熟的框架,Elasticsearch里面提供了丰富的操作数据的api,本篇我们就来学习一下在es中更新数据的几种方式. (一)更新文档 (1)部分更新: java api: ` HashMa ...

最新文章

  1. JavaScript--jquery.min.js文件
  2. 算法与数据结构(python):冒泡排序、选择排序、插入排序
  3. 【网络通信与信息安全】之深入解析进程之间的通信方式
  4. android studio中使用x5 webview来读写cookies的问题
  5. tutte定理证明hall定理_人教社课本现低级错误?“爱因斯坦用相对论证明勾股定理”...
  6. 高精地图技术专栏 | 基于空间连续性的异常3D点云修复技术
  7. MySQL高级理论-MVCC提交查询相关(版本链)
  8. u大侠pe系统桌面计算机,WinPE系统的四种启动方法
  9. java多态的简单例子_要JAVA的简单例子,继承\多态的,详细讲解运行的每一步
  10. Zookeeper3.4.10使用Curator
  11. java 获取xml 版本号_java解析xml获取对应值
  12. ae插件form_学习人数最多的课程 (推荐)AE+PR特效剪辑全能精英班
  13. 毕业论文参考文献格式GB/T 7714的Endnote设置教程
  14. 简单易懂的现代魔法——Play Framework攻略2
  15. 一个文字类RPG游戏框架(走过路过别错过)C++
  16. 命令提示符 查看已连接Wifi密码(忘记Wifi密码)
  17. PyQt5  PyQt5-tools 安装
  18. 分布式系统可用性和可靠性的区别,可用性如何计算,以及如何做到高可用和高可靠
  19. (转载)TRS的WCM6漏洞权限绕过以及绕过密码的登陆方式
  20. 快高考了,写点东西给你们

热门文章

  1. net core文件接收(jpg、png、zip、pdf等自己设置)
  2. PHP 动态获取数组索引的值
  3. PHP审核接口基本判断
  4. 监听下拉框,当前选中值
  5. java中Error(UnsatisfiedLinkError)与Exception是有差异的
  6. JDK绘制文字的流程与代码分析
  7. 同等条件下,杂交水稻是否增产?
  8. java sqlite 池_java – SQLite连接池
  9. 日期格式 java_Java时间日期格式转换
  10. C++ string转char* string转char[]