1.最直接的方法performSelector:withObject:afterDelay:
这种方法的缺点:每次要为延时写一个方法
2.使用类别,用BOLCK执行
[代码]c#/cpp/oc代码:
01
|
@implementation NSObject (PerformBlockAfterDelay)
|
03
|
- (void)performBlock:(void (^)(void))block
|
04
|
afterDelay:(NSTimeInterval)delay
|
06
|
block = [[block copy] autorelease];
|
07
|
[self performSelector:@selector(fireBlockAfterDelay:)
|
12
|
- (void)fireBlockAfterDelay:(void (^)(void))block {
|
3.使用GCD
[代码]c#/cpp/oc代码:
1
|
void RunBlockAfterDelay(NSTimeInterval delay, void (^block)(void))
|
3
|
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC*delay),
|
4
|
dispatch_get_current_queue(), block);
|
poolo:注意 图中的dispatch_getcurrent_queue() 方法在ios6已经被kill了
现在用dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,0)
第一个参数是优先级有,第二个参数为0或nil
如果要要对界面操作则使用 dispatch_get_main_queue ();
参考:http://www.cnblogs.com/guwandong/archive/2012/08/08/2626211.html
4.可能是不太好的方法,用animation的completion参数
[代码]c#/cpp/oc代码:
1
|
[UIView animateWithDuration:0.0 delay:5.0 options:UIViewAnimationOptionAllowUserInteraction animations:^{
|
2
|
} completion:^(BOOL finished) {
|
5.使用NSOperationQueue,在应用程序的下一个主循环执行:
[代码]c#/cpp/oc代码:
1
|
[[NSOperationQueue mainQueue] addOperationWithBlock:aBlock];
|
这个和调用performSelector: with afterDelay of 0.0f等价
转载于:https://my.oschina.net/wangdk/blog/205523
ios的延迟执行方法相关推荐
- js 延期执行_javaScript 中怎么延迟执行一个方法?
展开全部 function test() { alert("test"); } setTimeout(test, 1000); 其中,setTimeout为延迟执行方法,是JS原生 ...
- php 代码延迟执行,php和js编程中的延迟执行效果的代码
php和js编程中的延迟执行效果的代码 php sleep(10); usleep(10); js里的 setInterval("方法", 100); PHP sleep() 函数 ...
- iOS 延迟1.5s 执行方法
1. [self performSelector:@selector(fangfa) withObject:nil afterDelay:0.5]; // performSelector 2. ...
- iOS: 零误差或极小误差的定时执行或延迟执行?
问题如下: 节奏类游戏需要执行很多的跟音乐节拍相关的操作,并且为了保证节奏感,需要让操作跟节拍的关系十分紧密.对两者间隔要求不能超过0.02秒或更低. 目前使用了 GCD 中的 asyncAfter( ...
- iOS Extension 里的方法不执行
iOS Extension 里的方法不执行 确保Extension与主程序同在一个Target内. 主程序Build Phases->Embed App Extensions中导入对应Exten ...
- android 每隔2秒执行_Android中实现延迟执行操作的三种方法
今天在敲代码的过程中,有个需求是延迟执行某方法. 整理收集了三种方法,自己用的是第三种. 第一种线程休眠:new Thread() { @Override public void run() { su ...
- alert时java还时js_js 加alert后才能执行方法
原因是:访问页面时,某些js方法还没初始化(或者还没有加载出来)此时调用肯定不执行.alert起到了延迟的功能,当用户点击确定此时要执行的js恰好初始化完成,能正常执行. 解决方法是 加setTime ...
- Go 学习笔记(19)— 函数(05)[如何触发 panic、触发 panic 延迟执行、panic 和 recover 的关系]
1. 异常设计思想 Go 语言的错误处理思想及设计包含以下特征: 一个可能造成错误的函数,需要返回值中返回一个错误接口( error ),如果调用是成功的,错误接口将返回 nil ,否则返回错误. 在 ...
- 一些VR延迟优化方法
http://m.blog.csdn.net/article/details?id=50667507 VR中的"延迟", 特指"Motion-To-Photon Late ...
最新文章
- c语言如何将浮点数转换为字节,浅谈C语言整型与浮点型转换
- 阻碍GIS产业发展的三大问题
- python 模拟浏览器下载文件-python爬虫:使用Selenium模拟浏览器行为
- QDoc文字标记textmarkup
- mysql int(3)与int(11)的区别详解
- Hadoop阅读笔记(四)——一幅图看透MapReduce机制
- 【做题记录】区间排序—线段树
- 关系数据库——范式/反范式的利弊权衡和建议
- 在谈数据治理和数字化的时候,别忘了数据标准
- data-ajax=“false“
- 如何访问个人邮箱中的未读邮件
- 你可知道利用独立博客进行淘宝客推广方法
- ROS三轮全向轮移动底盘 (01)
- 金融科技上市公司业绩爆发,三大业务趋势显现
- 小游戏开发 小程序app游戏开发 H5小游戏开发
- Android NDK jni开发,适当的给Android 代码加密
- Could not find org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.0-release-764.
- Python-FiPy有限体积安装
- abaqus 复合材料edit composite layup中报错:没有指定坐标系
- matlab vvvs电机,MATLAB/Simulink在控制系统仿真与CAD应用(一)
热门文章
- 扇贝和不背单词_你还没找到中意的背单词APP?我都试过,我来帮你盘点盘点
- mqtt实例 php_php搭建MQtt协议服务
- python是个啥玩意儿_Pythonic到底是什么玩意儿?
- php 压入元素,php 数组增加元素的方法 array_push 和 array_merge
- 玩生死狙击找不到服务器怎么办,生死狙击手游进不了游戏解决方法 生死狙击手游进游戏诀窍...
- linux系统清理内存,如何清除linux的内存缓存,缓冲和交换空间
- java 各组件单击总数_java 获取面板上有多少个组件
- Hierarchical deformation of Locally Rigid Meshes
- 3.6 - Maya Commands: setAttr
- 利用语义分割对木薯根坏死进行评分