AFNetworking 3.0迁移指南
本指南是为了引导使用AFNetworking 2.x升级到最新的版本API,以达到过渡的目的,并且解释了新增和更改的设计结构。
新设备要求: iOS 7, Mac OS X 10.9, watchOS 2, tvOS 9, & Xcode 7
AFNetworking 3.0正式支持的iOS 7, Mac OS X的10.9, watchOS 2 , tvOS 9 和Xcode 7。如果你想使用AFNetworking在针对较旧版本的SDK项目,请检查README的兼容性信息。
NSURLConnection的API已废弃
AFNetworking 1.0建立在NSURLConnection的基础API之上 ,AFNetworking 2.0开始使用NSURLConnection的基础API ,以及较新基于NSURLSession的API的选项。 AFNetworking 3.0现已完全基于NSURLSession的API,这降低了维护的负担,同时支持苹果增强关于NSURLSession提供的任何额外功能。由于Xcode 7中,NSURLConnection的API已经正式被苹果弃用。虽然该API将继续运行,但将没有新功能将被添加,并且苹果已经通知所有基于网络的功能,以充分使NSURLSession向前发展。
AFNetworking 2.X将继续获得关键的隐患和安全补丁,但没有新的功能将被添加。Alamofire(Swift下的网络请求)软件基金会建议,所有的项目迁移到基于NSURLSession的API。
弃用的类
下面的类已从AFNetworking 3.0中废弃:
AFURLConnectionOperation
AFHTTPRequestOperation
AFHTTPRequestOperationManager
修改的类
下面的类包含基于NSURLConnection的API的内部实现。他们已经被使用NSURLSession重构:
UIImageView+AFNetworking
UIWebView+AFNetworking
UIButton+AFNetworking
迁移
AFHTTPRequestOperationManager 核心代码
如果你以前使用 AFHTTPRequestOperationManager , 你将需要迁移去使用 AFHTTPSessionManager。 以下的类在两者过渡间并没有变化:
securityPolicy
requestSerializer
responseSerializer
接下来举一个关于AFHTTPSessionManager的简单例子。注意HTTP网络请求返回的不再是AFHTTPRequestOperation, 修改成为了NSURLSessionTask,并且成功和失败的Block块中的参数也变更为了NSURLSessionTask,而不再是AFHTTPRequestOperation。
AFNetworking 2.x
1
2
3
4
5
6
|
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:@ "请求的url" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@ "成功" );
} failure:^(AFHTTPRequestOperation *operation, NSError*error) {
NSLog(@ "失败" );
}];
|
AFNetworking 3.0
1
2
3
4
5
6
|
AFHTTPSessionManager *session = [AFHTTPSessionManager manager];
[session GET:@ "请求的url" parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@ "成功" );
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@ "失败" );
}];
|
AFHTTPRequestOperation 核心代码
与NSURLConnection对象不同,每个共享应用范围的设置如会话管理、缓存策略、Cookie存储以及URL协议等,这些NSURLSession对象都可以单独进行配置。使用特定的配置来初始化会话,它可以发送任务来获取数据,并上传或下载文件。
在AFNetworking 2.0中,使用AFHTTPRequestOperation,有可能创建一个没有额外开销的独立的网络请求来获取数据。NSURLSession则需要更多的开销,为了获得所要请求的数据。
接下来,将要通过AFHTTPSessionManager创建一个单例,并创建一个任务和启动它。
AFNetworking 2.x
1
2
3
4
5
6
7
8
9
10
|
NSURL *URL = [NSURL URLWithString:@ "" ];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
op.responseSerializer = [AFJSONResponseSerializer serializer];
[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@ "JSON: %@" , responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@ "Error: %@" , error);
}];
[[NSOperationQueue mainQueue] addOperation:op];
|
AFNetworking 3.0
1
2
3
4
5
6
7
|
NSURL *URL = [NSURL URLWithString:@ "" ];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:URL.absoluteString parameters:nil success:^(NSURLSessionTask *task, id responseObject) {
NSLog(@ "JSON: %@" , responseObject);
} failure:^(NSURLSessionTask *operation, NSError *error) {
NSLog(@ "Error: %@" , error);
}];
|
UIKit的迁移
图片下载已经被重构,以遵循AlamofireImage架构与新的AFImageDownloader类。这个类的图片下载职责的代理人是UIButton与UIImageView的类目,并且提供了一些方法,在必要时可以自定义。类别中,下载远程图片的实际方法没有改变。
UIWebView的类目被重构为使用AFHTTPSessionManager作为其网络请求。
UIAlertView的类目被废弃
从AFNetworking 3.0后UIAlertView的类目因过时而被废弃。并没有提供UIAlertController类目的计划,因为这是应用程序应处理的逻辑,而不是这个库。
原文链接: AFNetworking 3.0
转载自:http://www.cocoachina.com/ios/20151022/13831.html
AFNetworking 3.0迁移指南相关推荐
- Spring Boot 2.0 迁移指南
点击上方"朱小厮的博客",选择"设为星标" 回复"666"获取新整理的1000+GB资料 前提 本文档将帮助您把应用程序迁移到 Spring ...
- 01-Spring Boot 2.0 迁移指南
http://www.54tianzhisheng.cn/2018/03/06/SpringBoot2-Migration-Guide/ 在你开始之前 首先,Spring Boot 2.0 需要 Ja ...
- SDWebImage 4 0 迁移指南
刚刚更新pods 编译程序,突然发现SDWebImage报错 了解到SDWebImage4.0 更换了不少方法,还增加了几个类,索性都研究一下 pod 更新SDWebImage版本为4.1.0 查找是 ...
- python2.0 迁移_Python ADAL 到 MSAL 的迁移指南 - Microsoft identity platform | Azure Docs
适用于 Python 的 ADAL 到 MSAL 迁移指南ADAL to MSAL migration guide for Python 10/09/2020 本文内容 本文重点介绍需要做出哪些更改, ...
- Spring Cloud Alibaba迁移指南(二):零代码替换 Eureka
为什么80%的码农都做不了架构师?>>> 自 Spring Cloud 官方宣布 Spring Cloud Netflix 进入维护状态后,我们开始制作<Spring C ...
- 一份非常详尽的 Objective-C 到 Swift 的迁移指南
原文在我的博客:一份非常详尽的 Objective-C 到 Swift 的迁移指南 国际友人可以看这里:A guidebook for migrating from Objective-C to Sw ...
- Spring Boot 2.x 新特性总结及迁移指南
这一篇文章主要讲解 Spring Boot 2.x 与 1.5.x 的区别,2.x 主要更新了什么东西,以便对 Spring Boot 2.x 有一个详细的了解. 本文讲的 1.x 指的是 1.5.1 ...
- Spring Cloud Alibaba迁移指南(四):零代码兼容 Api-Gateway
自 Spring Cloud 官方宣布 Spring Cloud Netflix 进入维护状态后,我们开始制作<Spring Cloud Alibaba迁移指南>系列文章,向开发者提供更多 ...
- Spring Cloud Alibaba迁移指南(四):零代码兼容 Api-Gateway 1
自 Spring Cloud 官方宣布 Spring Cloud Netflix 进入维护状态后,我们开始制作<Spring Cloud Alibaba迁移指南>系列文章,向开发者提供更多 ...
最新文章
- 虚拟化--012 多台虚拟机ping不通原因.
- String,StringBuffer和StringBuilder区别?
- linux sh文件case,Shell脚本case语句简明教程
- *2 echo、printf、mkdir命令的应用
- 让iis支持下载apk,ipa文件
- PHP-什么是PHP?为什么用PHP?有谁在用PHP?
- 头上有多少根头发算秃头?
- 具有分页,排序,搜索和导出数据选项的ASP.NET Core CRUD操作
- MySQL if函数使用详解
- 反装逼指南:掀起机器学习的神秘面纱
- 图片 和 base64 互转
- CCF201803-4 棋局评估(100分)【博弈+DFS】
- loadrunner中变量转换成一个参数
- windows phone (24) Canvas元素A
- lsof -Pni4 | grep LISTEN | grep php
- 【ArcGIS教程】ArcGIS软件操作——地图配准
- Redis设置登录密码
- STM32物联网项目-单极性步进电机28BYJ-48
- 【docker 安装-环境初始化】
- 线下沙龙 | 5月11日 ,百度智能云网络技术实践分享强势来袭!