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延迟加载的方法: 1. **performSelector** `performSelector:` 是Objective-C中的一个方法,允许我们延迟执行某个方法。例如,如果想要延迟3秒后加载某个视图,可以这样做: ```objc [self ...
在 Objective-C 中延迟执行还是很常见的需求,通常有如下几种方式可供选择: performSelector: 想要延迟调用某个方法: [self performSelector:@selector(delay) withObject:nil afterDelay:3.0]; 取消延迟的方法...
本文将对比分析四种常见的iOS延迟执行方法:`performSelector:`、`NSTimer`、`sleep:`以及`GCD`,并探讨它们的特点和适用场景。 1. `performSelector:` 方法: 这是一种简单且易于使用的延迟执行方式。通过调用`...
在实现 delegate 方法时,需要判断蓝牙状态,并根据蓝牙状态执行相应的操作,例如扫描设备、连接设备、读取数据等。同时,需要编写定时器,每秒读取一次 RSSI 值,并打印出它的值。 iOS 蓝牙开发数据实时传输需要...
在iOS的Webview中,用户在点击链接或者按钮时,会遇到一个大约300毫秒的延迟,这是为了区分单击和双击操作。在移动网页开发中,这种延迟可能会严重影响用户体验,尤其是在快速交互的场景下。为了解决这个问题,...
以上就是解决iOS App内H5页面倒计时在锁屏后停止或延迟的几种常见方法。实际开发中,应根据项目需求和资源选择最合适的方案,兼顾性能、用户体验和兼容性。例如,在酒店倒计时场景下,可能需要考虑到用户预订的精确...
总结来说,实现iOS的文字书写动画涉及了Core Animation和UIKit的深度结合,通过创建和操作`UIBezierPath`,分解和动画化路径,以及巧妙地使用`CAShapeLayer`和`UIView`的动画方法。理解并掌握这些技术,开发者可以...
开发者可以设置事务的属性,如动画持续时间、延迟、重复次数等,以控制动画的行为。 3. **CALayer**:扇形菜单的核心是图层(CALayer)。每个菜单项可以表示为一个图层,它们共享同一个父图层。通过改变子图层的...
然后,通过命令行工具执行"ios-minicap",并指定相应的参数,如设备UDID、屏幕分辨率、帧率等,即可启动录屏服务。 值得注意的是,由于"ios-minicap"涉及到设备的底层访问,所以在使用前需要确保你的iOS设备已经...
其中,scheduledTimerWithTimeInterval:repeats:block:方法可以在 block 中执行某个任务,而 scheduledTimerWithTimeInterval:invocation:repeats: 方法则可以使用 NSInvocation 来执行某个方法。 在使用 NSTimer ...
- 优化代码逻辑:精简代码,减少不必要的计算和循环,提高执行效率。 四、Flash进行iOS开发常见问题 - 兼容性问题:确保应用在不同版本的iOS和不同设备上都能正常运行。 - 性能瓶颈:识别和解决性能瓶颈,如延迟、...
`performSelector`还支持延迟执行和带参数的调用,如`performSelector:withObject:afterDelay:`。 其次,`respondsToSelector:`是另一个关键的实例方法,用于检查对象是否响应特定的选择子(selector)。这是确保在...
GCD还提供了高级功能,如延迟执行、一次性执行等。 在GCD中,有五种默认队列:主线程的主队列,三个不同优先级的后台队列,以及一个用于I/O的低优先级队列。自定义队列,包括串行和并行队列,提供了更大的灵活性。...
同时,为了实现自动消失,开发者可能利用GCD(Grand Central Dispatch)或者NSTimer来设置延迟执行隐藏操作。 在实际应用中,我们可以通过以下步骤使用这个自定义的`BDKNotifyHUD`: 1. 导入`BDKNotifyHUD`库。 2....
6. **加载新IOS**:在路由器不中断服务的情况下,可以使用`reload in x seconds`命令(x是延迟的时间,比如60秒),在指定时间后重启路由器加载新IOS。如果希望立即重启,可使用`reload`命令。 7. **确认新IOS运行*...