1.最直接的方法performSelector:withObject:afterDelay:
这种方法的缺点:每次要为延时写一个方法
2.使用类别,用BOLCK执行

[代码]c#/cpp/oc代码:

01 @implementation NSObject (PerformBlockAfterDelay)
02  
03 - (void)performBlock:(void (^)(void))block
04           afterDelay:(NSTimeInterval)delay
05 {
06     block = [[block copy] autorelease];
07     [self performSelector:@selector(fireBlockAfterDelay:)
08                withObject:block
09                afterDelay:delay];
10 }
11  
12 - (void)fireBlockAfterDelay:(void (^)(void))block {
13     block();
14 }
15  
16 @end

3.使用GCD

[代码]c#/cpp/oc代码:

1 void RunBlockAfterDelay(NSTimeInterval delay, void (^block)(void))
2 {
3     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC*delay),
4       dispatch_get_current_queue(), block);
5 }

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) {
3     //do stuff here
4 }];

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

[代码]c#/cpp/oc代码:

1 [[NSOperationQueue mainQueue] addOperationWithBlock:aBlock];

这个和调用performSelector: with afterDelay of 0.0f等价

转载于:https://my.oschina.net/wangdk/blog/205523

ios的延迟执行方法相关推荐

  1. js 延期执行_javaScript 中怎么延迟执行一个方法?

    展开全部 function test() { alert("test"); } setTimeout(test, 1000); 其中,setTimeout为延迟执行方法,是JS原生 ...

  2. php 代码延迟执行,php和js编程中的延迟执行效果的代码

    php和js编程中的延迟执行效果的代码 php sleep(10); usleep(10); js里的 setInterval("方法", 100); PHP sleep() 函数 ...

  3. iOS 延迟1.5s 执行方法

    1. [self performSelector:@selector(fangfa) withObject:nil afterDelay:0.5];  // performSelector   2.  ...

  4. iOS: 零误差或极小误差的定时执行或延迟执行?

    问题如下: 节奏类游戏需要执行很多的跟音乐节拍相关的操作,并且为了保证节奏感,需要让操作跟节拍的关系十分紧密.对两者间隔要求不能超过0.02秒或更低. 目前使用了 GCD 中的 asyncAfter( ...

  5. iOS Extension 里的方法不执行

    iOS Extension 里的方法不执行 确保Extension与主程序同在一个Target内. 主程序Build Phases->Embed App Extensions中导入对应Exten ...

  6. android 每隔2秒执行_Android中实现延迟执行操作的三种方法

    今天在敲代码的过程中,有个需求是延迟执行某方法. 整理收集了三种方法,自己用的是第三种. 第一种线程休眠:new Thread() { @Override public void run() { su ...

  7. alert时java还时js_js 加alert后才能执行方法

    原因是:访问页面时,某些js方法还没初始化(或者还没有加载出来)此时调用肯定不执行.alert起到了延迟的功能,当用户点击确定此时要执行的js恰好初始化完成,能正常执行. 解决方法是 加setTime ...

  8. Go 学习笔记(19)— 函数(05)[如何触发 panic、触发 panic 延迟执行、panic 和 recover 的关系]

    1. 异常设计思想 Go 语言的错误处理思想及设计包含以下特征: 一个可能造成错误的函数,需要返回值中返回一个错误接口( error ),如果调用是成功的,错误接口将返回 nil ,否则返回错误. 在 ...

  9. 一些VR延迟优化方法

    http://m.blog.csdn.net/article/details?id=50667507 VR中的"延迟", 特指"Motion-To-Photon Late ...

最新文章

  1. c语言如何将浮点数转换为字节,浅谈C语言整型与浮点型转换
  2. 阻碍GIS产业发展的三大问题
  3. python 模拟浏览器下载文件-python爬虫:使用Selenium模拟浏览器行为
  4. QDoc文字标记textmarkup
  5. mysql int(3)与int(11)的区别详解
  6. Hadoop阅读笔记(四)——一幅图看透MapReduce机制
  7. 【做题记录】区间排序—线段树
  8. 关系数据库——范式/反范式的利弊权衡和建议
  9. 在谈数据治理和数字化的时候,别忘了数据标准
  10. data-ajax=“false“
  11. 如何访问个人邮箱中的未读邮件
  12. 你可知道利用独立博客进行淘宝客推广方法
  13. ROS三轮全向轮移动底盘 (01)
  14. 金融科技上市公司业绩爆发,三大业务趋势显现
  15. 小游戏开发 小程序app游戏开发 H5小游戏开发
  16. Android NDK jni开发,适当的给Android 代码加密
  17. Could not find org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.0-release-764.
  18. Python-FiPy有限体积安装
  19. abaqus 复合材料edit composite layup中报错:没有指定坐标系
  20. matlab vvvs电机,MATLAB/Simulink在控制系统仿真与CAD应用(一)

热门文章

  1. 扇贝和不背单词_你还没找到中意的背单词APP?我都试过,我来帮你盘点盘点
  2. mqtt实例 php_php搭建MQtt协议服务
  3. python是个啥玩意儿_Pythonic到底是什么玩意儿?
  4. php 压入元素,php 数组增加元素的方法 array_push 和 array_merge
  5. 玩生死狙击找不到服务器怎么办,生死狙击手游进不了游戏解决方法 生死狙击手游进游戏诀窍...
  6. linux系统清理内存,如何清除linux的内存缓存,缓冲和交换空间
  7. java 各组件单击总数_java 获取面板上有多少个组件
  8. Hierarchical deformation of Locally Rigid Meshes
  9. 3.6 - Maya Commands: setAttr
  10. 利用语义分割对木薯根坏死进行评分