iOS延时执行的四种方法

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

//NSTimer不准确,CADisplayLink准确 

 self.timer = [NSTimer scheduledTimerWithTimeInterval:3.0target:self selector:@selector(roll) userInfo:nil repeats: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];

转载于:https://www.cnblogs.com/hanjian/p/4384663.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值