通过 NSURLConnection实现 同步/ 异步 请求 (WXHL)


#import "UIImageView+WebCach.h"

@implementation UIImageView (WebCach)

- (void)setImageWithURL:(NSURL *)url {

   
    //-----------------NSURLConnection同步请求-----------------------
    //使用同步请求
//    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
//    [request setHTTPMethod:@"GET"];
//    [request setURL:url];
//    [request setTimeoutInterval:60];
//   
//    NSURLResponse *response;
//    //发送同步请求
//    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
//   
//    UIImage *image = [UIImage imageWithData:data];
//   
//    self.image = image;
   
    //-----------------NSURLConnection异步请求-----------------------
   
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setHTTPMethod:@"GET"];
    [request setURL:url];
    [request setTimeoutInterval:60];
    
    //发送异步请求
//    [NSURLConnection connectionWithRequest:request delegate:self];
    
    NSOperationQueue *queue = [[NSOperationQueue alloc] init];
    //发送异步请求
 [NSURLConnection sendAsynchronousRequest:request
                                       queue:queue
                           completionHandler:^(NSURLResponse* respone, NSData* data, NSError* error){
  //该block是多线程调用的
   UIImage *image = [UIImage imageWithData:data];
                              
//    [self performSelectorOnMainThread:@selector(<#selector#>) withObject:<#(id)#> waitUntilDone:<#(BOOL)#>];
//跳到主线程上去操作UI
   dispatch_async(dispatch_get_main_queue(), ^{
   self.image = image;
    });
                              
    }];
   
}
---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// 还有一种实现异步请求的方式, 通过实现以下四个代理方法:
9./**  
10. *    
11. *实现必要的方法  
12. **/  
13. 
14. 
15.// -------------------------------------------------------------------------------  
16.//  connection:didReceiveResponse:response 通过response的响应,判断是否连接存在  
17.// -------------------------------------------------------------------------------  
18.-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{  
19.      
20.}  
 
24.//  connection:didReceiveData:data,通过data获得请求后,返回的数据,数据类型NSData  
25.// -------------------------------------------------------------------------------  
26.-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{        
31.}  
 
33.//  connection:didFailWithError:error 返回的错误信息    
36.-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{  
37.      
38.}    
40.//  connectionDidFinishLoading:connection 数据请求完毕,这个时候,用法是多线程的时候,通过这个通知,关部子线程  
41.// -------------------------------------------------------------------------------  
42.-(void)connectionDidFinishLoading:(NSURLConnection *)connection{  
43.      
44.} 

 

@end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值