iOS开发中延时的四种方法

2017-06-27  本文已影响0人  青丘山

我列举了日常经常使用的四种方法,各有优劣。不足之处,望大家斧正。

1.performSelector方法

[self performSelector:@selector(delayTime) withObject:nil afterDelay:2.0f/*延时的时间 为两秒*/];

-(void)delayTime

{

NSLog(@"延时的响应方法");

}

这种方法是一种非阻塞的执行方式,暂未找到取消执行方法。

在主线程中执行。

2.NSTimer 方法

[NSTimer timerWithTimeInterval:2.0f target:self selector:@selector(delayTime) userInfo:nil repeats:NO];

这是一种非阻塞的执行方式,可以采用NStimer类的-(void)invalidate;方法取消执行。

在主线程中执行。

NSTimer *timer;

[timer invalidate];

3.sleep方式

[NSThread sleepForTimeInterval:2.0f];

[self delayTime];

此方式在主线程和子线程中均可执行。

是一种阻塞的执行方式,建议放到子线程中,以免出现界面的滑动不畅(卡顿)。

没有找到取消执行的方法。

4.GCD的方式

__block ViewController *weakSelf=self;

dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0/** 延时的事件*/ * NSEC_PER_SEC));

dispatch_after(delayTime, dispatch_get_main_queue(), ^{

[weakSelf delayTime];

});

是一种非阻塞的执行方式,没有找到取消执行的方法。

此方式在可以在参数中选择执行的线程。

上一篇 下一篇

猜你喜欢

热点阅读