一、GCD与NSThread方式的延时执行进行比较
导入前面封装的GCD
#import "GCD.h"
- (void)threadEvent:(id)sender{
NSLog(@"NSThread线程事件");
}
- (void)viewDidLoad {
[super viewDidLoad];
//[self initConcurrent];
NSLog(@"开始");
//NSThread 方式的延时执行操作
[self performSelector:@selector(threadEvent:)
withObject:self
afterDelay:2.0];
//取消当前被注册的延时操作
// [NSObject cancelPreviousPerformRequestsWithTarget:self];
//CCD方式延时执行操作
[GCDQueue executeInMainQueue:^{
NSLog(@"延时2秒执行");
} afterDelaySecs:2.f];
}
执行结果:
2015-07-11 11:24:02.654 GCDDelay[2735:213842]开始
2015-07-11 11:24:04.655 GCDDelay[2735:213842] NSThread线程事件
2015-07-11 11:24:04.796 GCDDelay[2735:213842]延时2秒执行
可以看出NSthread时间精准
二、打开 [NSObject cancelPreviousPerformRequestsWithTarget:self];
执行结果:
2015-07-11 11:30:56.768 GCDDelay[2796:220332]开始
2015-07-11 11:30:58.769 GCDDelay[2796:220332]延时2秒执行
可以看出 NSThread 线程被取消,没有执行
本文对比了GCD和NSThread两种延时执行方法的特点与应用场景。通过实例展示了NSThread具有更高的时间精度,并支持取消延时操作;而GCD虽然代码简洁,但延时精确度较低且不支持取消操作。
1172

被折叠的 条评论
为什么被折叠?



