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. WF学习笔记(二)

    -DoWhile循环:当[Condition]条件为真时会执行[Body]中的内容, 当[Condition]条件为假时会执行[Body]中的内容一次 -ForEach<T> 循环 :[V ...

  2. 自己使用Jquery封装各种功能分享

    自己使用Jquery封装各种功能分享: 左右滚动图片 瀑布流 流动显示列表 广告切换 头像切换And广告切换 获取搜索引擎的来源关键字 上面列表中展示的功能都是使用jquery进行封装实现的,希望大家 ...

  3. js 中的流程控制—while和do while

    while语句: while(exp){  }如果为true ,执行代码块里的语句,如果为false,跳出循环 <script> var i =1 ; while (i<10){ / ...

  4. WPFDispatcher示例

    Dispatcher 类提供用于管理线程工作项队列的服务. 效果演示: <Window x:Class="WPF之Dispatcher对象.MainWindow" xmlns ...

  5. SQL Server与Oracle中的隔离级别

    在SQL92标准中,事务隔离级别分为四种,分别为:Read Uncommitted.Read Committed.Read Repeatable.Serializable 其中Read Uncommi ...

  6. Javascript AMD模块化规范-备用

    AMD是"Asynchronous Module Definition"的缩写,意思是"异步模块定义". 模块定义define(id?, dependencie ...

  7. 抓取天涯文章的蜘蛛代码,刚经过更新(因为天涯页面HTML代码变化)

    #_*_coding:utf-8-*- import urllib2 import traceback import codecs from BeautifulSoup import Beautifu ...

  8. HTML文档模式与盒模型

    HTML文档根据文档顶部的doctype声明来决定渲染模式,有标准模式(Standards Mode)与怪异模式(Quirks mode,或叫做混杂模式)两种模式. IE5及以前默认总是表现为怪异模式 ...

  9. 【产品体验】echo回声

    本人产品新人,学习中,希望大家用过该产品的给点意见,不吝赐教哦~~ 先来两张echo的界面图镇楼——        echo简介: “echo”是一款做声音社交的APP,在这里,你可以感受到声音无限的 ...

  10. nutch 异常集锦

    异常:Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp ...