码迷,mamicode.com
首页 > 移动开发 > 详细

iOS延时执行的三种方法

时间:2015-04-01 19:51:27      阅读:144      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!