同步,不具备开启线程的能力:dispatch_sync
异步,具备开启线程的能力:dispatch_async
并列队列:多个任务可以同时执行
串行队列:一个任务执行完后,再执行下一个任务
一个金典的列子:
#define ZHGlobalQueue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
#define ZHMainQueue dispatch_get_main_queue()
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
dispatch_async(ZHGlobalQueue, ^{
// 1.子线程
NSString* urlStr = @"";
NSURL *url = [NSURL URLWithString:urlStr];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *image = [UIImage imageWithData:data];
// 2.回主线程设置图片
dispatch_async(ZHMainQueue, ^{
[self.imageView setImage:image];
});
});
}
时间: 2024-10-10 11:36:26