首页 > 移动平台 > 详细

iOS延时执行的三种方法

时间:2015-04-01 19:51:04      阅读:274      评论:0      收藏:0      [点我收藏+]

 1. NSTimer,可以设置一段时间执行一次,不会卡住线程

//NSTimer不准确,CADisplayLink准确 

 self.timer = [NSTimer scheduledTimerWithTimeInterval:3.0target:selfselector:@selector(roll) userInfo:nilrepeats:NO];

 //NSDefaultRunLoopMode 一旦有滚动事件,默认模式暂时不监听

//NSRunLoopCommonModes 滚动模式时监听

self.timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(roll) userInfo:nil repeats:YES];

[[NSRunLoop currentRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes];

//结束方法 

 [self.timer invalidate];

 

 2.GCD的方法,可以选择在子线程远行 

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

     [self roll];

});

    

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

     [self roll];

});

 

3.延时执行,不会卡住线程

[self performSelector:@selector(roll) withObject:nil afterDelay:3.0];

 

4.会卡住线程,不推荐使用

[NSThread sleepForTimeInterval:3.0];

iOS延时执行的三种方法

原文:http://www.cnblogs.com/hanjian/p/4384663.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!