AFNetworking 详解

本文详细阐述了NSURLSession和AFNetworking的基本概念、核心类及其作用,重点介绍了如何使用NSURLSession进行网络请求,以及AFNetworking是如何对NSURLSession进行高度封装,提供简单易用的API,构建网络层组件,并通过AFURLSessionManager实现高效、安全的网络请求流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、系统提供的类和作用:

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 的核心。

  1. 负责创建和管理 NSURLSession
  2. 管理 NSURLSessionTask
  3. 实现 NSURLSessionDelegate 等协议中的代理方法
  4. 使用 AFURLSessionManagerTaskDelegate 管理进度
  5. 使用 _AFURLSessionTaskSwizzling 调剂方法
  6. 引入 AFSecurityPolicy 保证请求的安全
  7. 引入 AFNetworkReachabilityManager 监控网络状态

小结

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

来源:

http://draveness.me/afnetworking1/

http://draveness.me/afnetworking2/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值