__block UIImage *img;//如果是局部变量 需要加__block
//新建一个 serial queue
myQueue
dispatch_queue_t myQueue=dispatch_queue_create("downloadImge", NULL);
//
dispatch_async(myQueue, ^{
//加载图片
img=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imgUrl]]];
//模拟加载
});
//等加载完成后才能显示图片 block 执行有先后顺序
dispatch_async(myQueue, ^{
self.imgView.image=img;
});
一些说明
// concurrent block 执行没有先后顺序
dispatch_queue_t myQueue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(myQueue, ^{
for(int i=0;i<100;i++)
{
NSLog(@"hello 1");
}});
dispatch_async(myQueue, ^{
for(int i=0;i<100;i++)
{
NSLog(@"hello 2");
}});
dispatch_async(myQueue, ^{
for(int i=0;i<100;i++)
{
NSLog(@"hello 3");
}});
// FIFO serial... block 执行有先后顺序
dispatch_queue_t myQueue=dispatch_queue_create("myQueue", NULL);
dispatch_async(myQueue, ^{
for(int i=0;i<100;i++)
{
NSLog(@"hello 1");
}});
dispatch_async(myQueue, ^{
for(int i=0;i<100;i++)
{
NSLog(@"hello 2");
}});
dispatch_async(myQueue, ^{
for(int i=0;i<100;i++)
{
NSLog(@"hello 3");
}});