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中常用的一种延迟执行方法. 特点:这个方法必须要在主线程中使用.可以传递参数.可以取消操作,不能暂停. //不带参数 [self performSelector:@selector(delayDo:
主要对比分析了iOS延迟执行的4种方式,比较iOS延迟执行方式的特点,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
在 Objective-C 中延迟执行还是很常见的需求,通常有如下几种方式可供选择: performSelector: 想要延迟调用某个方法: [self performSelector:@selector(delay) withObject:nil afterDelay:3.0]; 取消延迟的方法...
解决ios的app内H5页面倒计时在锁屏后停止或延迟的解决方案
前言 在开发过程中,我们有时...这是iOS中常用的一种延迟执行方法. //不带参数 [self performSelector:@selector(delayDo:) withObject:nil afterDelay:1.0f]; //带参数 [self performSelector:@selector(delayD
ios demo,单击按钮,延时某个操作,并且完成了动态创建弹出式菜单功能
ios里在后台或者锁屏时js会停止运行,倒计时之类的场景会停止执行,这个就是解决这样的问题,常见的例如秒杀倒计时,抢券倒计时
iOS开发中,有两种常用的方法可以实现延迟执行,一种是使用GCD,另外一种是使用NSRunLoop类中提供的方法。 前言 对初学者来说,GCD似乎是一道迈不过去的坎,很多人在同步、异步、串行、并行和死锁这几个名词的漩涡中...
//initWithNibName将控制器绑定xib的方法,如果xib的名称和控制器的类名称相同的时候,直接写init(会自动绑定同名的xib)就可以,如果xib的名称和类名称不同的话,必须手动调用此方法来进行绑定 ...
IOS 关于取消延迟执行函数的种种。performSelector与cancelPreviousPerformRequestsWithTarget
Miniosa是分钟imalistic iOS的一个UDIO库提供容易,低延迟访问输入和输出音频缓冲器。 就是这样。 目标受众是想要进行实时音频处理的人。如何使用? 将MNAudioEngine.h和MNAudioEngine.m添加到您的项目。 请查看...
SwiftQueue是iOS的作业调度程序,灵感来自流行的android库(例如android-priority-jobqueue或android-job) 。 它使您可以在运行和重试约束下运行任务。 库将依赖于Operation和OperationQueue来确保所有任务将按...
它支持查询组合和延迟执行,并实现IEnumerable方法的子集,包括where,take,skip,orderBy,first / firstOrDefault,single / singleOrDefault,count,any和all。 它使您可以编写如下代码: NSArray * widgets =...
原因是浏览器正在等待查看您是否实际上正在执行双击。 兼容性 该库已作为一部分进行了部署,并已在以下移动浏览器上进行了尝试和测试: iOS 3及更高版本上的Mobile Safari iOS 5及更高版本上的Chrome Android上...
前言 作为一名勤恳单纯的未来iOS开发者,受迫于对新事物的好奇,便义无反顾地举手加入了团队里...setData:是逻辑层(.js)向视图层(.wxml)进行的数据渲染,是一个异步操作,所以可能需要用到延迟执行方法来确保赋值成功
移动端设备浏览器会默认在用户点击屏幕大约延迟300ms后才会触发点击事件,这是为了检查用户是否执行的是双击事件。为了能够立即响应用户的点击事件,才有了FastClick。 二.用法 全局安装fastclick: npm i fastclick...