AFNetworking是一款在OS X和iOS下都令人喜爱的网络库。为了迎合iOS新版本的升级, AFNetworking在3.0版本中删除了基于 NSURLConnection API的所有支持。如果你的项目以前使用过这些API,建议您立即升级到基于 NSURLSession 的API的AFNetworking的版本。本指南将引导您完成这个过程。

本指南是为了引导使用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迁移指南相关推荐

  1. Spring Boot 2.0 迁移指南

    点击上方"朱小厮的博客",选择"设为星标" 回复"666"获取新整理的1000+GB资料 前提 本文档将帮助您把应用程序迁移到 Spring ...

  2. 01-Spring Boot 2.0 迁移指南

    http://www.54tianzhisheng.cn/2018/03/06/SpringBoot2-Migration-Guide/ 在你开始之前 首先,Spring Boot 2.0 需要 Ja ...

  3. SDWebImage 4 0 迁移指南

    刚刚更新pods 编译程序,突然发现SDWebImage报错 了解到SDWebImage4.0 更换了不少方法,还增加了几个类,索性都研究一下 pod 更新SDWebImage版本为4.1.0 查找是 ...

  4. python2.0 迁移_Python ADAL 到 MSAL 的迁移指南 - Microsoft identity platform | Azure Docs

    适用于 Python 的 ADAL 到 MSAL 迁移指南ADAL to MSAL migration guide for Python 10/09/2020 本文内容 本文重点介绍需要做出哪些更改, ...

  5. Spring Cloud Alibaba迁移指南(二):零代码替换 Eureka

    为什么80%的码农都做不了架构师?>>>    自 Spring Cloud 官方宣布 Spring Cloud Netflix 进入维护状态后,我们开始制作<Spring C ...

  6. 一份非常详尽的 Objective-C 到 Swift 的迁移指南

    原文在我的博客:一份非常详尽的 Objective-C 到 Swift 的迁移指南 国际友人可以看这里:A guidebook for migrating from Objective-C to Sw ...

  7. Spring Boot 2.x 新特性总结及迁移指南

    这一篇文章主要讲解 Spring Boot 2.x 与 1.5.x 的区别,2.x 主要更新了什么东西,以便对 Spring Boot 2.x 有一个详细的了解. 本文讲的 1.x 指的是 1.5.1 ...

  8. Spring Cloud Alibaba迁移指南(四):零代码兼容 Api-Gateway

    自 Spring Cloud 官方宣布 Spring Cloud Netflix 进入维护状态后,我们开始制作<Spring Cloud Alibaba迁移指南>系列文章,向开发者提供更多 ...

  9. Spring Cloud Alibaba迁移指南(四):零代码兼容 Api-Gateway 1

    自 Spring Cloud 官方宣布 Spring Cloud Netflix 进入维护状态后,我们开始制作<Spring Cloud Alibaba迁移指南>系列文章,向开发者提供更多 ...

最新文章

  1. 虚拟化--012 多台虚拟机ping不通原因.
  2. String,StringBuffer和StringBuilder区别?
  3. linux sh文件case,Shell脚本case语句简明教程
  4. *2 echo、printf、mkdir命令的应用
  5. 让iis支持下载apk,ipa文件
  6. PHP-什么是PHP?为什么用PHP?有谁在用PHP?
  7. 头上有多少根头发算秃头?
  8. 具有分页,排序,搜索和导出数据选项的ASP.NET Core CRUD操作
  9. MySQL if函数使用详解
  10. 反装逼指南:掀起机器学习的神秘面纱
  11. 图片 和 base64 互转
  12. CCF201803-4 棋局评估(100分)【博弈+DFS】
  13. loadrunner中变量转换成一个参数
  14. windows phone (24) Canvas元素A
  15. lsof -Pni4 | grep LISTEN | grep php
  16. 【ArcGIS教程】ArcGIS软件操作——地图配准
  17. Redis设置登录密码
  18. STM32物联网项目-单极性步进电机28BYJ-48
  19. 【docker 安装-环境初始化】
  20. 线下沙龙 | 5月11日 ,百度智能云网络技术实践分享强势来袭!

热门文章

  1. 不要在意七十亿分之一对另七十亿分之一的看法
  2. html5 填表 表单 input output 与表单验证
  3. 近指针, 远指针和巨指针
  4. 解决保存快照失败后redis无法写入的问题( Redis is configured to save RDB snapshots)
  5. 装修相片(第50天拍,全部,25号更新)
  6. 牛客14718 开心的涂刷
  7. Leetcode--236. 二叉树的最近公共祖先(Java)
  8. github注册账号一直验证失败
  9. Opencv——基于索引表的图像细化
  10. QT中的QButtonGroup