ios 下载图片

 1.  第一种方式: 通过   NSThread

   

 // 1. 创建子线程

// [NSThread detachNewThreadSelector:@selector(download) toTarget:self withObject:nil];


 

-(void)download

{

    

    // 2. 获取NSURL

    NSURL *url = [NSURLURLWithString:@"http://pic1.ooopic.com/uploadfilepic/sheji/2010-01-13/OOOPIC_1982zpwang407_20100113f68118f451f282f4.jpg"];

    

    

    

    // 3. 下载图片,返回二进制数据

    

    NSData *data = [NSDatadataWithContentsOfURL:url];

   

    // 4. 把二进制数据转换为图片

     UIImage *image = [UIImageimageWithData:data];

    

    // 5. 显示图片,刷新UI线程

    

     [self.imgViewperformSelector:@selector(setImage:)onThread:[NSThreadmainThread] withObject:imagewaitUntilDone:YES];

    

    //6. info.plist中添加

//    http://www.apple.com/DTDs/PropertyList-1.0.dtd">

//   

//   

//    NSAllowsArbitraryLoads

//   

//   

//   

    

    // xcode 7.0 以后不支持http请求,只支持 https,所以需要添加这个

    

    


    }




 2.  第二种方式: 通过  dispatch_queue_t


  //1.开子线程下载图片

    //创建队列(并发)

    dispatch_queue_t queue =dispatch_get_global_queue(0,0);


    

    

    //异步函数

    dispatch_async(queue, ^{

        

        //1.获取url地址

        NSURL *url = [NSURLURLWithString:@"http://img.redocn.com/sheji/20170824/zhongqiuguoqingchuangyidaqixuanchuancuxiaohaibao_8608767.jpg"];

        

        //2.下载图片

        NSData *data = [NSDatadataWithContentsOfURL:url];

        

        //3.把二进制数据转换成图片

        UIImage *image = [UIImageimageWithData:data];

        

        NSLog(@"----%@",[NSThreadcurrentThread]);

        // 返回 UI线程

        dispatch_sync(dispatch_get_main_queue(), ^{

            self.imgView.image = image;

            NSLog(@"+++%@",[NSThreadcurrentThread]);

        });

    });


   


  -----  使用 nsoperate的 方式实现图片下载:

 //1.创建队列

    NSOperationQueue *queue= [[NSOperationQueue alloc]init];

    

    //2.下载图片

    [queue addOperationWithBlock:^{

        

        //2.1.确定要下载网络图片的url地址,一个url唯一对应着网络上的一个资源

        NSURL *url = [NSURL URLWithString:@"http://pic1.ooopic.com/uploadfilepic/sheji/2010-01-13/OOOPIC_1982zpwang407_20100113f68118f451f282f4.jpg"];

        

        //2.2.根据url地址下载图片数据到本地(二进制数据)

        NSData *data = [NSData dataWithContentsOfURL:url];

        

        //2.3.把下载到本地的二进制数据转换成图片

        UIImage *image = [UIImage imageWithData:data];

        

        //3.回到主线程刷新UI

        [[NSOperationQueue mainQueue] addOperationWithBlock:^{

            self.imgView.image = image;

            NSLog(@"%@----",[NSThread currentThread]);

        }];

    }];






你可能感兴趣的:(Objective-c)