MJ - 0918 - 网络编程1

实例:应用列表(网络获取图片)



1. 创建tableViewController

2. 导入app的plist

3. 导入app的Model(保存模版文件)

4. 在控制器写apps的懒加载(添加代码快)

5. 设置列表的行数

6. 创建cell(添加代码快)

7. 给cell中的detailTitle和title赋值

8. 开辟子线程设置imageView

8.1直接设置的弊端

1. 阻塞主线程,造成UI操作无响应

2. 重复下载,浪费资源,浪费流量

8.2懒加载创建队列

创建操作对象,下载图片

问题:下载失败后不能重新下载

解决:创建存储操作和url的字典,创建一一对应关系 

问题:重复下载

解决:判断是否成功下载过,判断字典中是否已存在下载操作operation

问题:初始化cell时没有设置imageview的尺寸而无法显示,或者cell重用时显示的是缓存cell的内容,误导用户

解决:使用占位图

问题:图片还没有下载完成,其所在的cell就被重用,要是当前要设置的图片下载比较快,先前下载的图片就会在后面覆盖当前的图片,imageView图片设置顺序:占为图->当前图片->先前图片

解决:不直接设置imageView.image,而是刷新表格,通过字典中的内容设置

问题:刷新怎个表格浪费内存资源

解决:单行刷新

问题:图片下载太多容易引发内存警报

解决:1. 释放字典,

2. 开始拖拽暂停队列,结束拖拽恢复队列

问题:xxViewController、queue、operation之间循环引用

解决:使用viewController的弱指针对象

问题:字典的key不能是nil,图片下载失败返回空时,程序会崩溃

解决:

######使用沙盒 #############################################

UIImage -> NSData -> File

Caches不会备份,也不会自动清理,用于存放占内存的资源

手机端必须使用全路径

存储图片缓存到沙盒中

取出沙盒中的图片

》封装下载流程,控制器只需调用即可

1 创建下载图片的代理方法

2  创建代理

3 创建url和indexpath属性

4 控制器设置url和indexPath

5 设置控制器为代理

6 实现代理方法

7 获取Image

》耗时操作可能被中途取消,需要把代理方法终止,响应取消操作

SDWebImage框架(掌握)



缓存管理

默认最大缓存时间:一周

默认最大缓存容量:没有设置

网络编程概览



》HTTP请求方案

苹果原生

NSURLConnection

NSURLLession

CFNetwork

第三方框架

ASIHTTPRequest

AFNetworking

MKNetworkKit

扩展知识点



1.

2. block中用到的对象都会被强引用,因为block代码不确定什么时候被调用

3.

4. XXAppDelegate负责监控整个项目

时间: 2024-10-08 09:04:50

MJ - 0918 - 网络编程1的相关文章

MJ - 0919 - 网络编程2

JSON 格式:{“key”:"value", "key":["value1", "value2", "value3"], "key":{"key":"value", "key":value}} key必须是字符串 解析方案 苹果原生:NSJSONSerialization(性能最好) 第三方框架:JSONKit.SBJson.

iOS网络编程开发—JSON和XML数据解析

iOS网络编程开发—JSON解析 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典和数组 {"name" : "jack", "age" : 10} {"names" : ["jack", "rose", "jim"]} 标准JSON格式的

iOS网络编程--NSConnection的同步连接与异步连接

1 // 2 // ZFViewController.m 3 // 0628-表单验证 4 // 5 // Created by zfan on 14-6-28. 6 // Copyright (c) 2014年 zfan. All rights reserved. 7 // 8 9 #import "ZFViewController.h" 10 #import "MBProgressHUD+MJ.h" 11 12 @interface ZFViewControll

网络编程练习 -- NSURLConnection -- get/post请求

网络编程基础 -- NSURLConnection -- GET请求 LWTViewController.m // // LWTViewController.m // 网络编程练习 -- NSURLConnection -- get请求 // // Created by apple on 14-6-26. // Copyright (c) 2014年 lwt. All rights reserved. // #import "LWTViewController.h" #import &

iOS网络编程开发-NSURLConnection基本使用

iOS网络编程开发-NSURLConnection基本使用 一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据,包括一个NSURL对象,请求方法.请求头.请求体.... (3)NSMutableURLRequest:NSURLRequest的子类 (4)NSURLConnection:负责发送请求,建立客户端和服务器的连接.发送NSURLRequest的数据给服务器,并收集来自服务器的响应数据 二.NSU

C#网络编程技术FastSocket实战项目演练

一.FastSocket课程介绍 .NET框架虽然微软提供了socket通信的类库,但是还有很多事情要自己处理,比如TCP协议需要处理分包.组包.粘包.维护连接列表等,UDP协议需要处理丢包.乱序,而且对于多连接并发,还要自己处理多线程等等.本期分享课程阿笨给大家带来的是来源于github开源Socket通信中间件:FastSocket,目的就是把大家从繁琐的网络编程技术中彻底地解放和释放出来. 阿笨只想安安静静的学习下网络编程技术Socket后,将学习的成果直接灵活的运用到自己的实际项目中去.

网络编程 -- RPC实现原理 -- RPC -- 迭代版本V1 -- 本地方法调用

网络编程 -- RPC实现原理 -- 目录 啦啦啦 V2--RPC -- 本地方法调用:不通过网络 入门 1. RPCObjectProxy rpcObjectProxy = new RPCObjectProxy(new LocalRPCClient()); : 绑定目标对象 2. IUserService userService = (IUserService) rpcObjectProxy.create(IUserService.class); :返回代理类 3. List<User> u

C#网络程序设计(1)网络编程常识与C#常用特性

    网络程序设计能够帮我们了解联网应用的底层通信原理!     (1)网络编程常识: 1)什么是网络编程 只有主要实现进程(线程)相互通信和基本的网络应用原理性(协议)功能的程序,才能算是真正的网络编程. 2)网络编程的层次 现实中的互联网是按照"TCP/IP分层协议栈"的体系结构构建的,因此程序员必须搞清楚自己要做的是哪个层次上的编程工作. TCP/IP协议体系的实现情况: 其中,网络接口层已经被大多数计算机生产厂家集成在了主板上,也就是经常所说的网卡(NIC).windows操

9. 网络编程:

网络编程: 端口: 物理端口: 逻辑端口:用于标识进程的逻辑地址,不同进程的标识:有效端口:0~65535,其中0~1024系统使用或保留端口. java 中ip对象:InetAddress. import java.net.*; class  IPDemo{ public static void main(String[] args) throws UnknownHostException{ //通过名称(ip字符串or主机名)来获取一个ip对象. InetAddress ip = InetA