ios开发--GCD使用介绍:4-延迟执行操作
2016-03-30 19:36
567 查看
在开发过程中,我们有时会希望把一些操作封装起来延迟一段时间后再执行。iOS开发中,有两种常用的方法可以实现延迟执行,一种是使用GCD,另外一种是使用NSRunLoop类中提供的方法。
1、使用GCD实现延迟执行
在GCD中可以使用dispatch_after()函数,封装一段代码到block中,在设置的延迟时间(dispatch_time_t)之后执行。void dispatch_after( dispatch_time_t when, dispatch_queue_t queue, dispatch_block_t block);
如下所示:在2.0秒后,输出一段日志。在该方法中,延迟执行的代码在主队列中执行,我们也可以修改执行的队列。
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSLog(@"延迟2.0秒后打印出来的日志!");
});
2、使用NSRunLoop类中的方法实现延迟执行
在NSRunLoop类中,也提供了有关延迟执行的方法。由于这些方法是对NSObject类的扩展,因此,所有的类都可以使用。@interface NSObject (NSDelayedPerforming)
- (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay inModes:(NSArray *)modes;
- (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay;
@end
下面的代码中也实现了延迟2秒打印一段日志的操作。
- (void)viewDidLoad {
[super viewDidLoad];
//延迟2秒执行printLog
[self performSelector:@selector(printLog) withObject:nil afterDelay:2.0];
}
-(void) printLog{
NSLog(@"延迟2.0秒后打印出来的日志!");
}
相关文章推荐
- iOS之Nib和Xib以及storyboard(故事版)
- IOS学习之——画板 涂鸦
- iOS storyboard中设置TableView的headerview 和 footerview
- IOS学习之——背景平铺
- IOS学习之——位图上下文 -- 水印图片
- IOS学习之—— 定时器 NSTimer 和 CADisplayLink 类的使用
- IOS学习之——图形上下文
- IOS学习之——Modal( 登陆,注册)
- IOS-推送通知
- IOS学习之——静态单元格
- IOS学习之——通知中心NSNotificationCenter
- IOS学习之——延迟执行
- IOS学习之——自定义代理delegate
- IOS学习之—— xib的用法--自定义View
- IOS学习之——自定义的Cell (代码)
- IOS学习之——实现数据源的方法(代码)
- IOS学习之——懒加载代码
- iOS 使用自定义字体
- IOS学习之——新手基础学习资料分享
- IOS self = [super init];