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等价
- ios开发之-- 延迟执行方法
延迟执行的几种方法,分享一下. 1.performSelector(NSObject)方法 2.NSTimer方法 3.GCD方法 4.sleep(NSThread)方法 1.performSe ...
- iOS 设置 延迟执行 与 取消延迟执行 方法 以及对 run loop 初步认识
之前开发过程中经常会有需求会使用 NSObject中的"performSelector:withObject:afterDelay:"做方法延迟执行的处理, 但是 还没有什么地方需 ...
- iOS定时器、延迟执行
1.通用方式(并不是实时调用并且会卡顿): // 一般用于更新一些非界面上的数据 [NSTimer scheduledTimerWithTimeInterval:时间间隔 target:self se ...
- IOS 关于取消延迟执行函数的种种。performSelector与cancelPreviousPerformRequestsWithTarget
本文非本人撰写 @interface NSObject (NSDelayedPerforming) - (void)performSelector:(SEL)aSelector withObj ...
- iOS延迟执行方法
swift 4.0中dispatch_async,dispatch_after的使用 2018年03月28日 16:15:44 xiao_yuly 阅读数:3576 版权声明:本文为博主原创文章,未经 ...
- IOS 设置定时器,执行方法
//设置定时器(1秒后跳到一下题) [self performSelector:@selector(nextQuestion) withObject:nil afterDelay:1.0];
- jquery 延迟执行方法
setTimeout方法使用时需注意: //以下两种方式都行: setTimeout(function () { test(); }, ); //或者 setTimeout(); function t ...
- 浅谈iOS开发中方法延迟执行的几种方式
Method1. performSelector方法 Method2. NSTimer定时器 Method3. NSThread线程的sleep Method4. GCD 公用延迟执行方法 - (vo ...
- js获取时间,循环执行任务,延迟执行任务
一.获取时间 核心方法创建一个时间对象:new Date() 时间对象相关操作 时间对象.函数名 函数名 功能 getYear() 获取四位数的年份 getMonth() 获取2位数的月数, 这个是从 ...
随机推荐
- React Native学习-调取摄像头第三方组件:react-native-image-picker
近期做的软件中图片处理是重点,那么自然也就用到了相机照相或者相册选取照片的功能. react-native中有image-picker这个第三方组件,但是0.18.10这个版本还不是太支持iPad. ...
- C++类(一)
#include<iostream> #include<string> using namespace std; //找了很久,似乎都是类放在Main方法体上 class Pe ...
- static和public
static:静态. 可以设置:静态类.静态变量.静态方法. 没有使用static修饰的成员为实例成员. 静态成员的使用:通过类名. 1.不加static修饰的成员是对象成员,归每个对象所 ...
- CSS之隐藏元素
1.opacity=0,该元素隐藏起来了,但不会改变页面布局,并且,如果该元素已经绑定一些事件,如click事件,那么点击该区域,也能触发点击事件的2.visibility=hidden,该元素隐藏起 ...
- WampServer修改Mysql密码的步骤
1.安装成功后,通过 phpmyadmin 进入mysql,点击上面的 [用户] 菜单,在用户[root]主机[localhost]点击编辑权限,下面有一个选项[修改密码],输入您想要的密码,如:12 ...
- 谷歌浏览器Chrome不再支持showModalDialog的解决办法
问题重现 弹出窗口编码: JavaScript 0 1 2 3 4 5 6 7 var obj = new Object(); var retval = window.showModalDia ...
- (转)Linux下Oracle启动、建立表空间、用户、授权、数据库导入导出
Linux系列 启动1.启动数据库实例,分为两步:第一步,启动监听:第二步,启动数据库实例. 1.1进入到sqlplus启动实例 [oracle@redhat ~]$ su - oracle ...
- 【学习笔记】【C语言】关键字
1.关键字就是C语言提供的有特殊含义的符号,也叫做“保留字” *C语言一共提供了32个关键字,这些关键字都被C语言赋予了特殊含义 auto double int struct break else l ...
- hdu 1716(dfs)
题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=1716 排列2 Problem Description Ray又对数字的列产生了兴趣:现 ...
- CP30 ---DataSource连接池的创建过程
1.参看CP30文档quickStart 如下具体创建步骤 public DataSource getDs() throws Exception { //创建连接池对象 ComboPooledData ...