ios5CookBook学习笔记之异步加载网络图片

 dispatch_queue_t mainQueue=dispatch_get_main_queue();//获取主队列


 //从网络上加载一幅图片
    dispatch_queue_t currentQueue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);//第一个参数表明在此队列获取的时间片
    //异步加载
    dispatch_async(currentQueue, ^(void){
        __block UIImage *image=nil;
        //在次级线程中同步加载
        dispatch_sync(currentQueue, ^{
            NSString *stringAsUrl=@"http://ww3.sinaimg.cn/bmiddle/7f4aad6djw1dyhxfs9mt3j.jpg";
            NSURL *url=[NSURL URLWithString:stringAsUrl];
            NSURLRequest *request=[NSURLRequest requestWithURL:url];
            NSError *downLoadError=nil;
            NSData *imageData=[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&downLoadError];//发送网络请求
            
            if (downLoadError==nil&&imageData!=nil) {
                image=[UIImage imageWithData:imageData];
            }
            else if(downLoadError!=nil)
            {
                NSLog(@"error With %@",downLoadError);
            }
            else
                NSLog(@"所提供的url中没有图片");
       });
        //加载完成后,返回至主线程
        dispatch_sync(mainQueue, ^{
            if (image!=nil) {
                UIImageView *imageView=[[UIImageView alloc]initWithFrame:self.view.bounds];
                [imageView setImage:image];
                [self.view addSubview:imageView];
            }
            else
                NSLog(@"照片下载失败");
        });
    });

你可能感兴趣的:(ios5CookBook学习笔记之异步加载网络图片)