本文列举了四种延时执行某函数的方法及其一些区别。假如延时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]; });

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. VI打开和编辑多个文件的命令
  2. 保存时间 默认_操作技能|WORD文档没保存,有办法恢复吗?
  3. java 分词词频_利用word分词来对文本进行词频统计
  4. redis+php微博,redis+php实现微博(三)微博列表功能详解
  5. 解决移动端 footer fixd 定位被键盘顶起来的方案
  6. Page Cache与Page回写
  7. php7视频处理扩展_PHP7扩展开发之类型处理
  8. yaf写入把数据库信息写入redis,再取出来传到页面上显示 2016-10-22
  9. 电子信息工程求职目标_广东海洋大学电子与信息工程学院电子信息工程专业欢迎你...
  10. 【案例】中国城市规划设计研究院:新型城镇化监控与评估平台
  11. DM6437烧写总结
  12. 物联网应用技术竞赛——android笔记
  13. linux卸载杀毒软件clama,centos 6 安装clamav杀毒软件查毒
  14. Photoshop-置换贴图-原理
  15. 对多个Excel表中的数据进行合并计算
  16. 【喷嚏图卦】 委内瑞拉崩溃的背后:渐行渐近的石油危机
  17. 华丽而实用的Java图表应用
  18. 基于Qt、FFMpeg的音视频播放器设计四(视频播放进度控制)
  19. 第十四周 项目1 - 验证算法
  20. 转载:电脑cmd命令怎么测试网速详细步骤

热门文章

  1. 全球高校CS实力最新排行:清华AI界第二,中科院视觉领域最强
  2. 不戴眼镜听不清?Google用视觉信号分离语音 | 附论文
  3. 现实版高达!美日巨型机器人格斗大战结果即将见分晓
  4. 摩拜前端周刊第10期
  5. intellij idea 忽略文件不提交
  6. Javascript备忘复习笔记2
  7. Skype for Business Server 2015-13-IISARR-2-发布-2-前端服务器
  8. Gcc 完全参考手册,参数说明,操作指南-Gcc Complete referene
  9. 【杂谈】Opera10.62的Flash 10插件在WIN 7下无法安装的问题
  10. 未来已来?揭开量子计算机的神秘面纱