浅谈iOS延迟执行的几种方式以及比较
2016-11-02 17:27
274 查看
一、performSelector方法:
[self performSelector:@selector(delayMethod) withObject:nil afterDelay:1.0f];
1.特点:
此方式要求必须在主线程中执行,否则无效。
是一种非阻塞的执行方式,
暂时未找到取消执行的方法。
二、定时器:NSTimer:
[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(delayMethod) userInfo:nil repeats:NO];
1.特点:
此方式要求必须在主线程中执行,否则无效。
是一种非阻塞的执行方式,
可以通过NSTimer类的- (void)invalidate;取消执行
三、sleep方式:
[NSThread sleepForTimeInterval:1.0f];
1.特点:
此方式在主线程和子线程中均可执行。
是一种阻塞的执行方式,建议放到子线程中,以免卡住界面
没有找到取消执行的方法
四、GCD方式:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
dispatch_async(dispatch_get_main_queue(), ^{
[self delayMethod];
});
});
1.特点:
此方式可以在参数中选择执行的线程。
是一种非阻塞的执行方式,
没有找到取消执行的方法。
[self performSelector:@selector(delayMethod) withObject:nil afterDelay:1.0f];
1.特点:
此方式要求必须在主线程中执行,否则无效。
是一种非阻塞的执行方式,
暂时未找到取消执行的方法。
二、定时器:NSTimer:
[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(delayMethod) userInfo:nil repeats:NO];
1.特点:
此方式要求必须在主线程中执行,否则无效。
是一种非阻塞的执行方式,
可以通过NSTimer类的- (void)invalidate;取消执行
三、sleep方式:
[NSThread sleepForTimeInterval:1.0f];
1.特点:
此方式在主线程和子线程中均可执行。
是一种阻塞的执行方式,建议放到子线程中,以免卡住界面
没有找到取消执行的方法
四、GCD方式:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
dispatch_async(dispatch_get_main_queue(), ^{
[self delayMethod];
});
});
1.特点:
此方式可以在参数中选择执行的线程。
是一种非阻塞的执行方式,
没有找到取消执行的方法。
相关文章推荐
- 浅谈iOS延迟执行的几种方式以及比较
- 浅谈iOS开发中方法延迟执行的几种方式
- 浅谈iOS开发中方法延迟执行的几种方式
- 浅谈iOS开发中方法延迟执行的几种方式
- 浅谈iOS开发中方法延迟执行的几种方式
- 浅谈iOS开发中方法延迟执行的几种方式
- 浅谈iOS开发中方法延迟执行的几种方式
- 浅谈iOS开发中方法延迟执行的几种方式(转载)
- iOS中延时执行的几种方式比较及汇总
- IOS中延时执行的几种方式的比较和汇总
- IOS中延时执行的几种方式的比较和汇总
- iOS 延迟执行的几种方式 —— HERO博客
- IOS中延时执行的几种方式的比较和汇总
- IOS中延时执行的几种方式的比较和汇总
- iOS开发 -- 延时执行某个方法的几种方式的比较和汇总
- iOS 开发中方法延迟执行的几种方式
- iOS中延时执行的几种方式的比较和汇总
- iOS开发-进阶:延时执行的几种方式的比较和汇总
- IOS中延时执行的几种方式的比较和汇总
- IOS中延时执行的几种方式的比较和汇总