将网址初始化成一个OC字符串对象.

NSString * urlString = @"http://image.zcool.com.cn/56/13/1308200901454.jpg";
    NSString * newUrlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

构建网络URL对象

NSURL * URL = [NSURL URLWithString:newUrlString];

创建网络请求

NSURLRequest * request = [NSURLRequest requestWithURL:URL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];

设置代理

[NSURLConnection connectionWithRequest:request delegate:self];

服从协议

@interface    ViewController () <NSURLConnectionDataDelegate>
    @end

实现代理方法:

当收到服务器响应时 触发
    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    获文件大小
    length = [response expectedContentLength];
    NSLog(@"%lld",length);
 
    当收到服务器响应时 , 为data 开辟空间 , 接下来服务器要返回数据
    self.data = [NSMutableData data];
}

当收到服务器返回数据时触发  , 返回的可能是资源片段(此时该方法重复执行)
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    //拼接数据
    [self.data appendData:data];
    
    CGFloat  rate = self.data.length * 1.0 / length;
    NSLog(@"%g",rate);
}

当服务器返回所有数据后触发 . 数据返回完毕
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
   // self.data;//就是服务器返回的所有的数据

//解析
   NSDictionary * dic = [NSJSONSerialization JSONObjectWithData:self.data options:NSJSONReadingMutableContainers error:nil];
   // NSLog(@"%@",dic);
   
   此时数据已经全部获取, 假如数据时为tableViewCell 设置cell的内容 , 此时需要刷新 cell

[tableView reloadData];

}

服务器连接错误时触发
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
   NSLog(@"%d",4);
}

转载于:https://my.oschina.net/qccc/blog/315752

异步GEI (2) 线程相关推荐

  1. C#:异步编程和线程的使用(.NET 4.5 ),异步方法改为同步执行

    摘自:http://www.codeproject.com/Articles/996857/Asynchronous-programming-and-Threading-in-Csharp-N(葡萄城 ...

  2. 异步同步、阻塞非阻塞、异步回调、线程队列和协程

    今天学习了异步同步.阻塞非阻塞.异步回调.线程队列和协程 一.异步同步和阻塞非阻塞 线程的三种状态: 1.就绪 2.运行 3.阻塞 阻塞:遇到了IO操作  代码卡住  无法执行下一行  CPU会切换到 ...

  3. 【转】1.3异步编程:线程同步基元对象

    开始<异步编程:同步基元对象(上)> 示例:异步编程:线程同步基元对象.rar 如今的应用程序越来越复杂,我们常常需要多线程技术来提高我们应用程序的响应速度.每个线程都由自己的线程ID,当 ...

  4. 【转】1.1异步编程:线程概述及使用

    从此图中我们会发现 .NET 与C# 的每个版本发布都是有一个"主题".即:C#1.0托管代码→C#2.0泛型→C#3.0LINQ→C#4.0动态语言→C#5.0异步编程.现在我为 ...

  5. @Async 异步任务自定义线程池的配置方法和 @Scheduled 定时任务自定义线程池的配置方式

    文章目录 一.定时和异步业务场景描述 二.定时调度任务的实现方式 三.定时调度任务的问题描述 四.定时调度多线程解决方案(方案一) 五.异步多线程程序实现方式 六.定时调度多线程解决方案(方案二) 一 ...

  6. Java异步并发和线程池

    Java异步并发和线程池 1.一条简单粗暴的路: a.使用 parallelStream可能存在的bug b. 如何正确使用 parallelStream 2.另一条路 参考1: https://we ...

  7. Aysnc的异步执行的线程池

    ProxyAsyncConfiguration.java源码: @Configuration @Role(BeanDefinition.ROLE_INFRASTRUCTURE) public clas ...

  8. c++ 异步下获取线程执行结果_异步编排(CompletableFuture异步调用)

    1.问题背景 问题:当查询接口较复杂时候,数据的获取都需要远程调用,必然需要花费更多的时间. 假如查询文章详情页面,需要如下标注的时间才能完成: 那么,用户需要4s后才能统计的数据.很显然是不能接受的 ...

  9. c++ 异步下获取线程执行结果_【分享吧】C++11多线程库介绍

    前言 对于c/c++程序员来说,编写跨平台的多线程代码十分的麻烦,因为线程的创建,同步接口在windows/linux平台上差别非常大.好在c++11标准新增了线程库,终于可以编写跨平台的多线程代码了 ...

最新文章

  1. CVPR 2019论文阅读:Libra R-CNN如何解决不平衡对检测性能的影响?
  2. 【互动有奖】年薪百万的程序员是怎样的?
  3. 研究人员发现物联网存在安全漏洞
  4. python能在excel运行吗-使用PyXLL在Excel中执行Python脚本
  5. Superhero Battle
  6. LeetCode 93. 复原IP地址(回溯)
  7. php 判断不是文件类型,php 判断文件类型
  8. python3 Xml操作
  9. 零基础入门学习Python,我与python的第一次亲密接触后的感受
  10. 反射(3)—动态、静态代理
  11. LambdaLoss | Google排序学习优化框架
  12. win10 mysql登录密码忘了_64位 windows10,MYSQL8.0.13重置密码(忘记密码或者无法登录)...
  13. java根据模板生成word文档_Python办公自动化:使用python来自动生成word文档
  14. vue点击改变data_vue 中自定义指令改变data中的值
  15. C语言 指针访问数组,C语言通过指针引用数组
  16. SECS/GEM概念
  17. 定积分的基本性质3 保序性
  18. channel的用法
  19. ES7和 ES8 一览
  20. 家·谱——人脸识别家谱系统

热门文章

  1. 启程篇—慢慢变富,做时间的朋友
  2. 从mpeg ts文件中提取I帧(2):pat pmt解析
  3. 计算机网络培训PPT
  4. 壹号本4锦鲤限量版评测
  5. IC验证培训——SV Interface 入门指导
  6. 序 - 算神码男人系列
  7. 光纤到户FTTH施工要求
  8. 无线之红外线技术的组网方式详解
  9. vs2017+Qt应用程序,Qt设置软件图标ICON
  10. 【附源码】计算机毕业设计java智慧后勤app设计与实现