AFNetworking 3.0迁移指南

By | 10月23日
Advertisement

原文出自:http://mp.weixin.qq.com/s?__biz=MjM5OTM0MzIwMQ==&mid=400163159&idx=1&sn=f51f7f5904e31ee6b7426c6f33053776&scene=23&srcid=1023H8UyUbiSyUxTkN8v2h4y#rd

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

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

[manager GET:@"请求的url" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {

NSLog(@"成功");

} failure:^(AFHTTPRequestOperation *operation, NSError*error) {

NSLog(@"失败");

}];

AFNetworking 3.0

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

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

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类目的计划,因为这是应用程序应处理的逻辑,而不是这个库。

Similar Posts:

  • AFNetworking 3.0迁移指南 (大神整理翻译的译文很是简单易懂!刚好看AFN3.0时候看到了帮助大大的)

    原文作者:暮落晨曦  AFNetworking是一款在OS X和iOS下都令人喜爱的网络库.为了迎合iOS新版本的升级, AFNetworking在3.0版本中删除了基于 NSURLConnection API的所有支持.如果你的项目以前使用过这些API,建议您立即升级到基于 NSURLSession 的API的AFNetworking的版本.本指南将引导您完成这个过程. 本指南是为了引导使用AFNetworking 2.x升级到最新的版本API,以达到过渡的目的,并且解释了新增和更改的设计结构

  • AFNetworking 3.0迁移

    AFNetworking是一款在OS X和iOS下都令人喜爱的网络库. iOS新版本的升级, AFNetworking在3.0版本中删除了基于 NSURLConnection API的所有支持. 如果你的项目以前使用过这些API,建议您立即升级到基于 NSURLSession 的API的AFNetworking的版本. 新设备要求: iOS 7, Mac OS X 10.9, watchOS 2, tvOS 9, & Xcode 7 AFNetworking 3.0正式支持的iOS 7, Mac

  • socket.io 1.x迁移指南

    转载请注明: TheViper http://www.cnblogs.com/TheViper socket.io 1.x是从今年5月底开始发布更新的,从版本号看的出,这是次大更新.具体参见https://github.com/Automattic/socket.io/wiki/Migrating-to-1.0.我就说几点最重要的. 日志输出 0.x版本的日志输出都是直接在终端或命令行输出,使用者只能控制是否输出日志.在1.x里面,使用者还可以指定输出什么,比如,DEBUG=socket.io:

  • iOS上传文件(图片)之AFNetworking 3.0上传文件上传图片

    iOS上传文件(图片)之AFNetworking 3.0上传文件上传图片 本人最近做了一个上传头像的功能,找了许多iOS上传图片的资料,特意整理了下,希望对大家有帮助! 上传图片其实也是一个post请求,但你需要在请求头中告诉服务器一些信息 例如 解析格式, NSString *charset = (__bridge NSString *)CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncod

  • EJB 3.0开发指南--学习网站

    http://www.chinabyte.com/key/4201/169201.html EJB开发专区 ·EJB 3.0+Aspect实现声明性编程初步 ·按要求决定是否有状态的EJB ·在Jboss环境下Web Service调用EJB ·利用 Geronimo 深入 EJB Web 应用程序 ·如何在EJB应用程序中使用Spring ·ASP.NET应用程序中调用EJB ·ASP.NET应用程序中调用EJB ·EJB的核心技术应用总结 ·JavaBean 与 EJB 有何不同之处 ·使用

  • Working with NSURLSession: AFNetworking 2.0

    简单翻译,有很多错误,看官无法理解处请英文原文对照. http://code.tutsplus.com/tutorials/working-with-nsurlsession-afnetworking-20--mobile-22651 by Bart Jacobs3 Feb 2014 In the previous installments of this series, we've taken a close look at the NSURLSession API introduced in

  • AFNetworking 3.0封装post请求body里面内容是空的

    迁移到AFNetworking 3.0,网上资料较少.发现封装post,body里面内容是空的,服务端收到的params为空. 自己研究了一个正确的写法.供大家参考. NSDictionary *param = [NSDictionarydictionaryWithObjectsAndKeys:@{@"agent":@"X-IOS",@"version":[[UIDevicecurrentDevice] systemVersion], _sman

  • AFNetworking 2.0使用(持续更新)

    本人视频教程系列 导入AFNetworking 2.0 文件夹,引入头文件AFNetworking.h --------------- *使用NSURLSessionDownloadTask来下载一张图片,并带有下载进度(以下两段代码是一起的,注意) NSProgress为iOS7新增加的类 // 定义一个progress指针 NSProgress *progress; // 创建一个URL链接 NSURL *url = [NSURL URLWithString:\ @"http://wallp

  • [置顶] AFNetworking 2.0 新特性讲解之AFHTTPSessionManager

    AFNetworking 2.0 相比1.0 API 接口改动还是很大的. 其中一个便是 AFURLSessionManager,当然如果你不太熟悉,或者为了兼容低版本,你依然可以选择AFHTTPRequestOperationManager,AFURLSessionManager是基于 NSURLSessionConfiguration(IOS 7.0+, MAC OX10_9+)的. 下面我们借用TuneStore的API 来完成AFURLSessionManager的讲解. 如果您在看这边

  • FORCAL32W.DLL V9.0 编程指南

    FORCAL32W.DLL V9.0 编程指南 目 录 1 输出函数 2 简单计算 3 FORCAL二级函数设计 4 FORCAL的基本用法 5 Forcal软件组成与使用 6 用FORCAL保存和检索数据 Forcal 输 出 函 数 1.1 版本信息函数:ForcalVer 1.2 初始化FORCAL:InitForcal 1.3 释放FORCAL:FreeForcal 1.4 获得FORCAL运行错误:GetRunErr 1.5 测试FORCAL运行错误:TestRunErr 1.6 设置

Tags: