zoukankan      html  css  js  c++  java
  • 网络请求

    #import <Foundation/Foundation.h>
    
    //定义下载中的block
    typedef void(^ProcessBlock)(NSURLResponse *response,NSData *data,NSError *error);
    //定义下载完成的block
    typedef void(^CompletionBlock)(NSURLResponse *response,NSData *data,NSError *error);
    
    //接受网络连接协议
    @interface CustomConnection : NSURLConnection<NSURLConnectionDataDelegate>
    
    + (CustomConnection *)sendAsyRequest:(NSURLRequest *)request andProcessBlock:(ProcessBlock)processblock andCompletionBlock:(CompletionBlock)completionblock;
    
    @end
    

      

    #import "CustomConnection.h"
    
    @interface CustomConnection ()
    
    @property (nonatomic,strong)NSError *error;
    
    @property (nonatomic,strong)NSURLResponse *response;
    @property (nonatomic,strong)NSMutableData *data;
    
    @property (nonatomic,strong)CompletionBlock completionBlock;//在这里使用的是strong.引用计数加1(有内存管理)
    @property (nonatomic,strong)ProcessBlock processBlock;
    
    @end
    
    
    @implementation CustomConnection
    
    + (CustomConnection *)sendAsyRequest:(NSURLRequest *)request andProcessBlock:(ProcessBlock)processblock andCompletionBlock:(CompletionBlock)completionblock
    {
        CustomConnection * connection  = [[CustomConnection alloc]initWithRequest:request delegate:nil];
        connection.completionBlock = completionblock;
        connection.processBlock = processblock;
        
        [connection start];
        
        return connection;
    }
    
    - (id)initWithRequest:(NSURLRequest *)request delegate:(id)delegate
    {
        //指定当前的网络连接工具类的代理对象是自己
        self = [super initWithRequest:request delegate:self];
        if (self) {
            ;
        }
        return self;
    }
    //收到网络连接响应的时候调用的方法
    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
    {
        self.response = response;
        self.data = [[NSMutableData alloc]init];
    }
    ////收到网络链接发送信息时...
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    {
        [self.data appendData:data];
        self.processBlock (self.response,self.data,self.error);
    }
    //收到网络链接结束信息时...
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection
    {
        self.completionBlock (self.response,self.data,self.error);
    }
    
    - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
    {
        self.error = error;
    }
    
    @end
    

      在使用的时候,

     NSURL *url = [NSURL URLWithString:@"http://www.taopic.com/uploads/allimg/110329/23-11032ZK01593.jpg"];
        NSURLRequest *request = [NSURLRequest requestWithURL:url];
        
        [CustomConnection sendAsyRequest:request andProcessBlock:^(NSURLResponse *response, NSData *data, NSError *error) {
            UIImageView *imageV = [[UIImageView alloc]initWithImage:[UIImage imageWithData:data]];
            imageV.frame = self.view.bounds;
            [self.view addSubview:imageV];
           NSLog(@"下载中") ;
        } andCompletionBlock:^(NSURLResponse *response, NSData *data, NSError *error) {
            NSLog(@"下载完成") ;
            
        }];
    

      

  • 相关阅读:
    php一些技巧函数
    让apache不区分图片和文件后缀大小写
    ajax的同步和异步问题 (转)
    windows上在linux客户端上传小文件lrzsz
    linux查看时间和修改时间
    mysql常用命令
    yum安装 lnmp
    linux网卡设置详解
    centos最小安装,之后想安装x-windows,安装图形界面 startx
    optimize table table_name myisam mysql自动清除删除过留下的空记录
  • 原文地址:https://www.cnblogs.com/yinyakun/p/3555795.html
Copyright © 2011-2022 走看看