`
119568242
  • 浏览: 427007 次
  • 性别: Icon_minigender_1
  • 来自: 深圳/湛江
社区版块
存档分类
最新评论

[ios]ios的延迟执行方法

    博客分类:
  • ios
 
阅读更多
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等价
分享到:
评论

相关推荐

    iOS延迟执行方法详解

    近日学习了延迟执行的几种方法,分享一下。...这是iOS中常用的一种延迟执行方法. 特点:这个方法必须要在主线程中使用.可以传递参数.可以取消操作,不能暂停. //不带参数 [self performSelector:@selector(delayDo:

    iOS 延迟加载

    以下是四种实现iOS延迟加载的方法: 1. **performSelector** `performSelector:` 是Objective-C中的一个方法,允许我们延迟执行某个方法。例如,如果想要延迟3秒后加载某个视图,可以这样做: ```objc [self ...

    IOS开发中延迟执行和取消

    在 Objective-C 中延迟执行还是很常见的需求,通常有如下几种方式可供选择: performSelector: 想要延迟调用某个方法: [self performSelector:@selector(delay) withObject:nil afterDelay:3.0]; 取消延迟的方法...

    对比分析iOS延迟执行的4种方式

    本文将对比分析四种常见的iOS延迟执行方法:`performSelector:`、`NSTimer`、`sleep:`以及`GCD`,并探讨它们的特点和适用场景。 1. `performSelector:` 方法: 这是一种简单且易于使用的延迟执行方式。通过调用`...

    iOS蓝牙开发数据实时传输

    在实现 delegate 方法时,需要判断蓝牙状态,并根据蓝牙状态执行相应的操作,例如扫描设备、连接设备、读取数据等。同时,需要编写定时器,每秒读取一次 RSSI 值,并打印出它的值。 iOS 蓝牙开发数据实时传输需要...

    清除从iOSwebview点击的300ms延迟

    在iOS的Webview中,用户在点击链接或者按钮时,会遇到一个大约300毫秒的延迟,这是为了区分单击和双击操作。在移动网页开发中,这种延迟可能会严重影响用户体验,尤其是在快速交互的场景下。为了解决这个问题,...

    解决ios的app内H5页面倒计时在锁屏后停止或延迟的解决方案

    以上就是解决iOS App内H5页面倒计时在锁屏后停止或延迟的几种常见方法。实际开发中,应根据项目需求和资源选择最合适的方案,兼顾性能、用户体验和兼容性。例如,在酒店倒计时场景下,可能需要考虑到用户预订的精确...

    IOS动画——文字书写效果

    总结来说,实现iOS的文字书写动画涉及了Core Animation和UIKit的深度结合,通过创建和操作`UIBezierPath`,分解和动画化路径,以及巧妙地使用`CAShapeLayer`和`UIView`的动画方法。理解并掌握这些技术,开发者可以...

    ios扇形动画菜单

    开发者可以设置事务的属性,如动画持续时间、延迟、重复次数等,以控制动画的行为。 3. **CALayer**:扇形菜单的核心是图层(CALayer)。每个菜单项可以表示为一个图层,它们共享同一个父图层。通过改变子图层的...

    ios-minicap.zip

    然后,通过命令行工具执行"ios-minicap",并指定相应的参数,如设备UDID、屏幕分辨率、帧率等,即可启动录屏服务。 值得注意的是,由于"ios-minicap"涉及到设备的底层访问,所以在使用前需要确保你的iOS设备已经...

    iOS中最全的各种定时器使用教程

    其中,scheduledTimerWithTimeInterval:repeats:block:方法可以在 block 中执行某个任务,而 scheduledTimerWithTimeInterval:invocation:repeats: 方法则可以使用 NSInvocation 来执行某个方法。 在使用 NSTimer ...

    Flash开发iOS应用

    - 优化代码逻辑:精简代码,减少不必要的计算和循环,提高执行效率。 四、Flash进行iOS开发常见问题 - 兼容性问题:确保应用在不同版本的iOS和不同设备上都能正常运行。 - 性能瓶颈:识别和解决性能瓶颈,如延迟、...

    ios demo,performSelector和respondsToSelector

    `performSelector`还支持延迟执行和带参数的调用,如`performSelector:withObject:afterDelay:`。 其次,`respondsToSelector:`是另一个关键的实例方法,用于检查对象是否响应特定的选择子(selector)。这是确保在...

    IOS多线程理解

    GCD还提供了高级功能,如延迟执行、一次性执行等。 在GCD中,有五种默认队列:主线程的主队列,三个不同优先级的后台队列,以及一个用于I/O的低优先级队列。自定义队列,包括串行和并行队列,提供了更大的灵活性。...

    iOS提示信息框

    同时,为了实现自动消失,开发者可能利用GCD(Grand Central Dispatch)或者NSTimer来设置延迟执行隐藏操作。 在实际应用中,我们可以通过以下步骤使用这个自定义的`BDKNotifyHUD`: 1. 导入`BDKNotifyHUD`库。 2....

    cisco 7200 ios

    6. **加载新IOS**:在路由器不中断服务的情况下,可以使用`reload in x seconds`命令(x是延迟的时间,比如60秒),在指定时间后重启路由器加载新IOS。如果希望立即重启,可使用`reload`命令。 7. **确认新IOS运行*...

Global site tag (gtag.js) - Google Analytics