IOS中延时执行的几种方式的比较和汇总
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中延时执行的几种方式的比较和汇总相关推荐
- IOS中延时执行的几种方式的比较
本文列举了四种延时执行某函数的方法及其一些区别.假如延时1秒时间执行下面的方法. - (void)delayMethod { NSLog(@"execute"); } 1.perf ...
- iOS:延时执行的三种方式
延时执行的三种方式:performSelectorXXX方法.GCD中延时函数.创建定时器 第一种方式:NSObject分类当中的方法,延迟一段时间调用某一个方法 @interface NSObjec ...
- iOS中延时执行(睡眠)的几种方法
1. 最直接的方法: [self performSelector:@selector(deleyMethod) withObject:nil afterDelay:1.0]; 此方式要求必须在主线程中 ...
- iOS中收起键盘的几种方式
在使用UITextField的时候,我们会和键盘打交道,有时候要求弹出来的键盘类型是数字键盘,有时候要求我们弹出来的是一般的键盘.当我们输入完成的时候,就涉及到在上什么时候收回键盘的事情了.收回键盘分 ...
- php怎么异步执行,php中异步执行的四种方式
一.使用Ajax 与 img 标记 原理:服务器返回的html中插入Ajax 代码或 img 标记,img的src为需要执行的程序. 优点:实现简单,服务端无需执行任何调用. 缺点:在执行期间,浏览器 ...
- sh执行文件 参数传递_详解shell中脚本参数传递的两种方式
方式一:$0,$1,$2.. 采用$0,$1,$2..等方式获取脚本命令行传入的参数,值得注意的是,$0获取到的是脚本路径以及脚本名,后面按顺序获取参数,当参数超过10个时(包括10个),需要使用${ ...
- ios多线程开发的常用三种方式
ios多线程开发的常用三种方式 1.NSThread 2.NSOperationQueue 3.GCD NSThread: 创建方式主要有两种: [NSThread detachNewThreadSe ...
- Android中播放音乐的几种方式
Android中播放音乐的几种方式 前言 前几天一直在研究RxJava2,也写了记录了几篇博客,但因为工作任务原因,需要研究音频相关的知识,暂时放下Rxjava,本文的demo中,MediaPalye ...
- 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
贺邦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的: 使用库函数 ...
- es重建字段类型_关于elasticsearch中更新数据的几种方式
作为一个成熟的框架,Elasticsearch里面提供了丰富的操作数据的api,本篇我们就来学习一下在es中更新数据的几种方式. (一)更新文档 (1)部分更新: java api: ` HashMa ...
最新文章
- JavaScript--jquery.min.js文件
- 算法与数据结构(python):冒泡排序、选择排序、插入排序
- 【网络通信与信息安全】之深入解析进程之间的通信方式
- android studio中使用x5 webview来读写cookies的问题
- tutte定理证明hall定理_人教社课本现低级错误?“爱因斯坦用相对论证明勾股定理”...
- 高精地图技术专栏 | 基于空间连续性的异常3D点云修复技术
- MySQL高级理论-MVCC提交查询相关(版本链)
- u大侠pe系统桌面计算机,WinPE系统的四种启动方法
- java多态的简单例子_要JAVA的简单例子,继承\多态的,详细讲解运行的每一步
- Zookeeper3.4.10使用Curator
- java 获取xml 版本号_java解析xml获取对应值
- ae插件form_学习人数最多的课程 (推荐)AE+PR特效剪辑全能精英班
- 毕业论文参考文献格式GB/T 7714的Endnote设置教程
- 简单易懂的现代魔法——Play Framework攻略2
- 一个文字类RPG游戏框架(走过路过别错过)C++
- 命令提示符 查看已连接Wifi密码(忘记Wifi密码)
- PyQt5 PyQt5-tools 安装
- 分布式系统可用性和可靠性的区别,可用性如何计算,以及如何做到高可用和高可靠
- (转载)TRS的WCM6漏洞权限绕过以及绕过密码的登陆方式
- 快高考了,写点东西给你们