您的位置:首页 > 其它

AFNetworking 详解

2016-04-10 17:33 260 查看
一、系统提供的类和作用:

1.NSURLSessionConfiguration类

其中NSURLSessionConfiguration用于配置会话的属性,可以通过该类配置会话的工作模式
2.NSURLSession类

第一种方式是使用静态的sharedSession方法,该类使用共享的会话,该会话使用全局的Cache,Cookie和证书。

第二种方式是通过sessionWithConfiguration:方法创建对象,也就是创建对应配置的会话,与NSURLSessionConfiguration合作使用。

第三种方式是通过sessionWithConfiguration:delegate:delegateQueue方法创建对象,二三两种方式可以创建一个新会话并定制其会话类型。该方式中指定了session的委托和委托所处的队列。当不再需要连接时,可以调用Session的invalidateAndCancel直接关闭,或者调用finishTasksAndInvalidate等待当前Task结束后关闭。这时Delegate会收到URLSession:didBecomeInvalidWithError:这个事件。Delegate收到这个事件之后会被解引用。

3.NSURLSessionTask类

NSURLSessionTask是一个抽象子类,它有三个子类:NSURLSessionDataTask,NSURLSessionUploadTask和NSURLSessionDownloadTask。这三个类封装了现代应用程序的三个基本网络任务:获取数据,比如JSON或XML,以及上传和下载文件。



4.NSURLSessionDelegate和NSURLSessionTaskDelegate协议

在协议的方法中可以完成各种各样的回调动作,如身份验证、完成任务后的动作、错误处理和后台任务完成的动作等。委托方法指定在NSURLSession中一定数量的字节传输使用int64_t类型的参数。

二、AFNetworking 

实际上只是对 
NSURLSession
 高度地封装,
提供一些简单易用的 API 方便我们在 iOS 开发中发出网络请求并在其上更快地构建网络层组件并提供合理的接口.



AFURLSessionManager
 绝对可以称得上是 AFNetworking 的核心。
负责创建和管理 
NSURLSession

管理 
NSURLSessionTask

实现 
NSURLSessionDelegate
 等协议中的代理方法

使用 
AFURLSessionManagerTaskDelegate
 管理进度

使用 
_AFURLSessionTaskSwizzling
 调剂方法

引入 
AFSecurityPolicy
 保证请求的安全

引入 
AFNetworkReachabilityManager
 监控网络状态



小结

AFURLSessionManager
 是对 
NSURLSession
 的封装
它通过 
- [AFURLSessionManager
dataTaskWithRequest:completionHandler:]
 等接口创建 
NSURLSessionDataTask
 的实例
持有一个字典 
mutableTaskDelegatesKeyedByTaskIdentifier
 管理这些
data task 实例
引入 
AFURLSessionManagerTaskDelegate
 来对传入的 
uploadProgressBlock
 
downloadProgressBlock
 
completionHandler
 在合适的时间进行调用
实现了全部的代理方法来提供 block 接口
通过方法调剂在 data task 状态改变时,发出通知
来源:

http://draveness.me/afnetworking1/

http://draveness.me/afnetworking2/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: