AFNetworking 2.0 相比1.0 API 接口改动还是很大的. 其中一个便是 AFURLSessionManager,当然如果你不太熟悉,或者为了兼容低版本,你依然可以选择AFHTTPRequestOperationManager,AFURLSessionManager是基于

NSURLSessionConfiguration(IOS 7.0+, MAC OX_9+)的.

下面我们借用TuneStore的API 来完成AFURLSessionManager的讲解.

如果您在看这边文章之前 我建议您首先阅读下AFNetworking2.0的官方新特性介绍.

  1. AFNetworking 2.0 Migration Guide - 你如果之前用过AF1.0 这个是很有必要来看的.
  2. AFNetworking 2.0 Docs
  3. AFNetworking 2.0 Source

另外T*witer 上说NSHipster的AFNetworking现在翻译成中文了,所以我搬过来了有兴趣的朋友也可以去看下,https://github.com/NSHipster/articles/blob/zh-Hans/2013-09-16-afnetworking-2.md

1:创建 client search iTunes


#import "AFHTTPSessionManager.h"@interfaceITunesClient:AFHTTPSessionManager+(ITunesClient*)sharedClient;-(NSURLSessionDataTask*)searchForTerm:(NSString*)term completion:(void(^)(NSArray*results,NSError*error))completion;@end
#import "ITunesClient.h"@implementationITunesClient+(ITunesClient*)sharedClient {staticITunesClient*_sharedClient =nil;staticdispatch_once_t onceToken;
dispatch_once(&onceToken,^{
NSURL *baseURL =[NSURL URLWithString:@"https://itunes.apple.com/"];NSURLSessionConfiguration*config =[NSURLSessionConfiguration defaultSessionConfiguration];[config setHTTPAdditionalHeaders:@{@"User-Agent":@"TuneStore iOS 1.0"}];

//设置我们的缓存大小其中内存缓存大小设置10M  磁盘缓存5M

NSURLCache*cache =[[NSURLCache alloc] initWithMemoryCapacity:10*1024*1024
diskCapacity:50*1024*1024
diskPath:nil];[config setURLCache:cache]; _sharedClient =[[ITunesClient alloc] initWithBaseURL:baseURL
sessionConfiguration:config];
_sharedClient.responseSerializer =[AFJSONResponseSerializer serializer];});return _sharedClient;}-(NSURLSessionDataTask*)searchForTerm:(NSString*)term completion:(void(^)(NSArray*results,NSError*error))completion {NSURLSessionDataTask*task =[self GET:@"/search"

//为了速度我们将地区设置为台湾

                                parameters:@{@"country":@"TW",@"term": term }
success:^(NSURLSessionDataTask*task, id responseObject){NSHTTPURLResponse*httpResponse =(NSHTTPURLResponse*)task.response;if(httpResponse.statusCode ==200){
dispatch_async(dispatch_get_main_queue(),^{
completion(responseObject[@"results"],nil);});}else{
dispatch_async(dispatch_get_main_queue(),^{
completion(nil,nil);});NSLog(@"Received: %@", responseObject);NSLog(@"Received HTTP %d", httpResponse.statusCode);}} failure:^(NSURLSessionDataTask*task,NSError*error){
dispatch_async(dispatch_get_main_queue(),^{
completion(nil, error);});}];return task;}@end

Note:为了便于对这个任务进行(取消,监控等)操作 我们将这个任务返回.

2: 在view controller对client进行回调


NSURLSessionDataTask*task =[[ITunesClient sharedClient] searchForTerm:term
completion:^(NSArray*results,NSError*error){if(results){self.results = results;[self.tableView reloadData];}else{NSLog(@"ERROR: %@", error);}}];

3:  AFNetworking UIKit 之 加载网络图片

每一个cell 我们可以利用 AFNetworking对UIImageView的 category .只需要在文件中导入 #import "UIImageView+AFNetworking.h" ,然后 cellForRowAtIndexPath:方法下直接使用即可

    cell.artworkImageView.image =nil;[cell.artworkImageView cancelImageRequestOperation];

    NSURL *imageURL =[NSURL URLWithString:record[@"artworkUrl100"]];if(imageURL){[cell.artworkImageView setImageWithURL:imageURL];}

4:当任务运行时显示 activity indicator

导入 #import "UIActivityIndicatorView+AFNetworking.h"  

[self.activityIndicator setAnimatingWithStateOfTask:task];

运行效果如下

demo 下载地址


[置顶] AFNetworking 2.0 新特性讲解之AFHTTPSessionManager的更多相关文章

  1. AFNetworking 2.0 新特性讲解之AFHTTPSessionManager

    AFNetworking 2.0 新特性讲解之AFHTTPSessionManager (2014-02-17 11:56:24) 转载▼     AFNetworking 2.0 相比1.0 API ...

  2. Javaweb学习笔记——(七)——————myexlipse基本使用、jdk5.0新特性及反射讲解

    1.debug调试模式: *使用这种模式,调试程序(看到程序运行停止在这一行) -显示出来行号 -双击左边,出现一个圆点,表示设置了一个断点 *使用debug as方式,运行程序 -特使是否进入到调试 ...

  3. webpack 4.0.0-beta.0 新特性介绍

    webpack 可以看做是模块打包机.它做的事情是:分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式 ...

  4. 返璞归真 asp.net mvc (13) - asp.net mvc 5.0 新特性

    [索引页][源码下载] 返璞归真 asp.net mvc (13) - asp.net mvc 5.0 新特性 作者:webabcd 介绍asp.net mvc 之 asp.net mvc 5.0 新 ...

  5. [C#]6.0新特性浅谈

    原文:[C#]6.0新特性浅谈 C#6.0出来也有很长一段时间了,虽然新的特性和语法趋于稳定,但是对于大多数程序猿来说,想在工作中用上C#6.0估计还得等上不短的一段时间.所以现在再来聊一聊新版本带来 ...

  6. C# Note33: 总结C# 6.0/7.0 新特性

    先注明,本文主体参考自:C# 6.0新特性 目前代码中使用了很多C#6.0的新特性,下面以Point类来做相关叙述: public class Point { public int X { get; ...

  7. Servlet 3.0 新特性详解

    转自:http://www.ibm.com/developerworks/cn/java/j-lo-servlet30/#major3 Servlet 是 Java EE 规范体系的重要组成部分,也是 ...

  8. [翻译] C# 8.0 新特性 Redis基本使用及百亿数据量中的使用技巧分享(附视频地址及观看指南) 【由浅至深】redis 实现发布订阅的几种方式 .NET Core开发者的福音之玩转Redis的又一傻瓜式神器推荐

    [翻译] C# 8.0 新特性 2018-11-13 17:04 by Rwing, 1179 阅读, 24 评论, 收藏, 编辑 原文: Building C# 8.0[译注:原文主标题如此,但内容 ...

  9. 【转帖】Servlet 3.0 新特性详解

    http://www.ibm.com/developerworks/cn/java/j-lo-servlet30/ Servlet 3.0 新特性概述 Servlet 3.0 作为 Java EE 6 ...

随机推荐

  1. 水题(素数表)NYOJ素数距离

                描述 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度.如果左右有等距离长度素数,则输出左侧的值及相应距离. 如果输入的整数本身就是素数,则输 ...

  2. ACM YTU 《挑战编程》第一章 入门 Problem E: Graphical Editor

    Description Graphical editors such as Photoshop allow us to alter bit-mapped images in the same way ...

  3. java设计模式——接口模式

    java将接口的概念提升为独立的结构,体现了接口与实现分离.java接口允许多个类提供相同的功能,也允许一个同时实现多个接口.java的接口与抽象类十分相似.java与抽象类中的区别: 1.一个类可以 ...

  4. tornado学习精要

    最简单的应用在程序的最顶部,我们导入了一些Tornado模块.虽然Tornado还有另外一些有用的模块,但在这个例子中我们必须至少包含这四个模块. 12341234包括了一个有用的模块(tornado ...

  5. .Net4.0 ashx页面报错:检测到有潜在危险的Request.Form值(转)

    原地址:http://zzhi191.blog.163.com/blog/static/1350849520111116518067/ web开发中难免要多到ajax技术. asp.net中我们处理a ...

  6. iOS 仪表式数字跳动动画-b

    前几天搞了 双曲线波浪动画(http://www.jianshu.com/p/7db295fd38eb)和环形倒计时动画(http://www.jianshu.com/p/d1d16dff33c9)而 ...

  7. jq实现瀑布流效果

    <!doctype html><html><head><meta http-equiv="Content-Type" content=&q ...

  8. python将图片转为base64编码

    import base64 f = open("m1.jpg", "rb") res = f.read() s = base64.b64encode(res) ...

  9. C#使用字符串分割字符串

    我们都会用字符分割字符串: string[] recvArr = recv.Split(';'); 如果用字符串分割呢?下面: string[] sArray = Regex.Split(recv, ...

  10. 创新高性能移动 UI 框架-Canvas UI 框架

    WebView 里无法获得的能力虽然是「体验增强」与「端基本能力」,但现都基本上有成熟解决方法.但后期的 UI 和 Layout 的性能反而是目前 Web 技术欠缺的.所以,无论是 Titanium ...