同步下载和异步下载

什么时候需要自定义view

1 需要特殊的图形

2 需要控制触摸事件的时候

同步下载模型


由上图可知:同步下载需要三步

1 由手机客户端向服务器端发起请求,服务器端接受请求,并且剖析http参数

2 服务器端把数据发送给客户端,客户端一直阻塞等待返回数据

3 数据接收完成

同步下载的缺点

交互不好,容易卡死,一般下载数据较小或者由特定的需求

//同步请求

    

    /*//第一步 创建一个URL

    //NSURL把字符串转化成一个URL(网络资源地址)

    NSURL *pUrl = [NSURL URLWithString:URL];

    //第二个 创建一个请求

    //创建一个请求(根据网络资源地址) 用来给服务器端 发送请求 NSURLRequestUseProtocolCachePolicy缓存机制

    //timeoutInterval反应的事件的最大时间

    NSURLRequest *pRequest = [[NSURLRequest alloc]initWithURL:pUrl cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];

    //第三步 建立连接

    //根据发送同步请求的时候 需要的两个参数(发起之后 线程就会一直等待服务器响应 知道超出最大的时间)

    NSURLResponse *pResponse = nil;

    NSError *pError = nil;

    NSData *pData = [NSURLConnection sendSynchronousRequest:pRequest returningResponse:&pResponse error:&pError];

    NSLog(@"pData = %@",pData);

    NSLog(@"pError = %@",[pError localizedDescription]);

    */

异步下载模型


忽然同步下载的区别是异步下载发送请求后不会等待接收完数据

异步下载也有三步

1 客户端向服务器发送请求 服务器接收请求并剖析http参数

2 应用程序再后台下载数据 在这个过程不会阻塞客户端运行(可以认为是打开一个下载工具 就不用管了 下载失败或者成功会有回调)

3 数据接收完成

/*异步请求*/

    //1.获取网络资源路径(URL)

    NSURL *pURL1 = [NSURL URLWithString:URL];

    //2.根据URL创建请求

    NSURLRequest *pRequset1 = [NSURLRequest requestWithURL:pURL1 cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];

    //3.(与同步请求的区别点)发起请求,通过委托模式回调完成数据获取

    [NSURLConnection connectionWithRequest:pRequset1 delegate:self];

    

    [self.window makeKeyAndVisible];

    return YES;

}

#pragma mark  URLConnectionDataDelegate

//1.服务器响应回调的方法

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

{

    NSLog(@"服务器响应");

    self.pData = [NSMutableData dataWithCapacity:5000];

}

//2.服务返回数据,客户端开始接受(data为返回的数据)

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

{

    NSLog(@"服务器返回数据");

    //将返回数据放入缓存区

    [self.pData appendData:data];

}

//3.数据接受完毕回调的方法

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

{

    NSLog(@"数据接受完毕");

    NSLog(@"pData = %@",self.pData);

}

//4.接受数据失败时候调用的方法

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error

{

    NSLog(@"数据接受失败,失败原因:%@",[error localizedDescription]);

}




  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值