你的位置:首页 > 操作系统

[操作系统]延时执行的三种方式


 1 - (void)viewDidLoad 2 { 3   [super viewDidLoad]; 4   // Do any additional setup after loading the view, typically from a nib. 5 } 6  7 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 8 { 9   NSLog(@"-----touchesBegan1-----");10   11 12 13   NSLog(@"-----touchesBegan2-----");14 }15 16 - (void)download:(NSString *)url17 {18   NSLog(@"download------%@---%@", url, [NSThread currentThread]);19 }20 21 - (void)delay322 {23   // 3秒后回到主线程执行block中的代码24 //  dispatch_queue_t queue = dispatch_get_main_queue();25 //  dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), queue, ^{26 //    NSLog(@"------task------%@", [NSThread currentThread]);27 //  });28   29   // 3秒后自动开启新线程 执行block中的代码30   dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);31   dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), queue, ^{32     NSLog(@"------task------%@", [NSThread currentThread]);33   });34 }35 36 - (void)delay237 {38   // 一旦定制好延迟任务后,不会卡主当前线程39   [self performSelector:@selector(download:) withObject:@"http://555.jpg" afterDelay:3];40 }41 42 - (void)delay143 {44   // 延迟执行不要用sleep,坏处:卡住当前线程45   [NSThread sleepForTimeInterval:3];46   NSLog(@"-----下载图片-----");47 }