1. 最直接的方法:

[self performSelector:@selector(deleyMethod) withObject:nil afterDelay:1.0]; 

此方式要求必须在主线程中执行,否则无效。是一种非阻塞的执行方式,暂时未找到取消执行的方法。

缺点:每次要为延时写一个方法。

2. 用 NSTread

[NSThread sleepForTimeInterval:0.06];

此方式在主线程和子线程中均可执行。是一种阻塞的执行方式,建方放到子线程中,以免卡住界面,没有找到取消执行的方法。

3.用GCD。

    double delayInSeconds = 2.0;  dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);  dispatch_after(popTime, dispatch_get_main_queue(), ^(void){  // code to be executed on the main queue after delay  });
此方式在可以在参数中选择执行的线程。是一种非阻塞的执行方式,没有找到取消执行的方法。

4.定时器:NSTimer

[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(delayMethod) userInfo:nil repeats:NO];

此方式要求必须在主线程中执行,否则无效。是一种非阻塞的执行方式,可以通过NSTimer类的- (void)invalidate;取消执行。

5.使用NSOperationQueue,在应用程序的下一个主循环执行:

<span style="background-color: rgb(255, 255, 255);"><span style="color:#000000;">[[NSOperationQueue mainQueue] addOperationWithBlock:aBlock];</span></span>

这个和调用performSelector: with afterDelay of 0.0f等价
6.可能是不太好的方法,用animation的completion参数

[UIView animateWithDuration:0.0 delay:5.0 options:UIViewAnimationOptionAllowUserInteraction animations:^{} completion:^(BOOL finished) {//do stuff here}];

iOS中延时执行(睡眠)的几种方法相关推荐

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

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

  2. oracle的解析計劃,Oracle中获取执行计划的几种方法分析

    1. 预估执行计划 - Explain PlanExplain plan以SQL语句作为输入,得到这条SQL语句的执行计划,并将执行计划输出存储到计划表中. 首先,在你要执行的SQL语句前加expla ...

  3. Android延时执行调用的几种方法

    一.开启新线程 new Thread(new Runnable(){        public void run(){            Thread.sleep(XXXX);          ...

  4. python自带的shell是什么-python中执行shell的两种方法总结

    一.使用python内置commands模块执行shell commands对Python的os.popen()进行了封装,使用SHELL命令字符串作为其参数,返回命令的结果数据以及命令执行的状态: ...

  5. java indexof 子字符串_Java中字符串中子串的查找共有四种方法(indexof())

    Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下: 1.int indexOf(String str) :返回第一次出现的指定子字符串在此 ...

  6. Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法...

    Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法 www.MyException.Cn   发布于:2012-09-15 ...

  7. js 改变change方法_Linux 中改变主机名的 4 种方法 | Linux 中国

    今天,我们将向你展示使用不同的方法来修改主机名.你可以从中选取最适合你的方法.-- Magesh Maruthamuthu 昨天我们已经在我们的网站中写过如何在 Linux 中修改主机名的文章[1]. ...

  8. iOS: JS和Native交互的两种方法,iosjsnative交互

    iOS: JS和Native交互的两种方法,iosjsnative交互 背景: UIWebView: iOS 用来展示 web 端内容的控件. 1. 核心方法: - (NSString*)string ...

  9. 【转】Java中字符串中子串的查找共有四种方法(indexof())

    原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下: 1.int ...

最新文章

  1. java tostringutils_StringUtils
  2. git 删除已经 add 的文件 记录
  3. spring cloud alibaba_SpringCloudAlibaba与Cloud搭配方案
  4. 清华大学:2021元宇宙研究报告
  5. iframe 跨域 cookies操作
  6. 你了解部署流水线吗?
  7. DOS批处理中对含有特殊字符的文件名的处理方法
  8. java基础--接口
  9. 计算机文化基础(高职高专版 第十一版)第六章 答案
  10. 基于BERT阅读理解框架的司法要素抽取方法
  11. 计算机固态硬盘装系统,固态硬盘如何装系统
  12. linux离线安装apr-util 报错,Linux 编译 apr-util 时报错
  13. Python下载库pip pygame
  14. JAVA Oracle插入大量数据优化
  15. 隐字神文,先来个隐身
  16. spring事务管理tx:Advice详解
  17. 矩阵求和c语言通俗易懂
  18. android 高光动画,记一个头像高光动画的CSS实现
  19. 【软件质量保障笔记】软件质量保障
  20. 服务器厂商对VMware vSphere的驱动支持

热门文章

  1. 基于JSP的班级聚会网站
  2. 【使用 BERT 的问答系统】第 1 章 : 自然语言处理简介
  3. android全平台编译libjpeg-turbo并基于ANativeWindow加载JPEG图片
  4. python 基础 —— sys.path 与 sys.path.append
  5. CES 2023:华硕轻薄本创新形态+硬核配置引领新创作时代
  6. KUDU(三)kudu的模式设计
  7. Opencv4.5.1 微信二维码识别功能 QRCode 编译与使用 C++
  8. SSD时代,你的固态硬盘选哪款?
  9. 学术论文投稿第五弹——如何写Discussion
  10. Centos修改时间为24小时制