AFHTTPClient的异步回调模式

以前第一个版本,ios的http都用的同步模式,在很多地方会导致线程阻塞,自己开发了一个简易的AFHTTPClient的异步回调模式。

回调的protocol:

@protocol MyAFNetworkingResponse <NSObject>

@required

-(void) MyHttpResponse:(NSString*)ret
Type:(NSString*)strType returnData:(NSObject*)retData;

@end

AFHTTPClient的异步通信的实现类:

@interface MyAFNetworkingClient : AFHTTPClient

@property NSURL* mServerUrl;//http服务地址

@property id<MyAFNetworkingResponse>
delegate;//这个最重要,回调的代理

//类初始化函数

- (id)init;

- (id)initWithBaseURL:(NSURL *)url;

/*然后是一堆实现的函数*/

.....

@end

然后viewcontroller中:

@interface MainViewController ()< MyAFNetworkingResponse>

@end

@implementation MainViewController

- (void)viewDidLoad {

[super viewDidLoad];

//初始化

self.mAFNetworkingHttpClient =
[[MyAFNetworkingClient alloc] init];

self.mAFNetworkingHttpClient.delegate = self;

}

-(void) MyHttpResponse:(NSString*)ret
Type:(NSString*)strType returnData:(NSObject*)retInfo{

__weak MainViewController* wself = self;

if ([strType isEqualToString:@"xxxx"])
{

//某个具体http类型的,实现处理

}else if([strType isEqualToString:@"xxxx"]){

//某个具体http类型的,实现处理

}

}

@end

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-10 17:20:32

AFHTTPClient的异步回调模式的相关文章

[C#学习笔记之异步编程模式2]BeginInvoke和EndInvoke方法 (转载)

为什么要进行异步回调?众所周知,普通方法运行,是单线程的,如果中途有大型操作(如:读取大文件,大批量操作数据库,网络传输等),都会导致方法阻塞,表现在界面上就是,程序卡或者死掉,界面元素不动了,不响应了.异步方法很好的解决了这些问题,异步执行某个方法,程序立即开辟一个新线程去运行你的方法,主线程包括界面就不会死掉了.异步调用并不是要减少线程的开销, 它的主要目的是让调用方法的主线程不需要同步等待在这个函数调用上, 从而可以让主线程继续执行它下面的代码. BeginInvoke方法可以使用线程异步

jquery.Deferred promise解决异步回调

我们先来看一下编写AJAX编码经常遇到的几个问题: 1.由于AJAX是异步的,所有依赖AJAX返回结果的代码必需写在AJAX回调函数中.这就不可避免地形成了嵌套,ajax等异步操作越多,嵌套层次就会越深,代码可读性就会越差. $.ajax({ url: url, data: dataObject, success: function(){ console.log("I depend on ajax result."); }, error: function(){} }); consol

State Threads——异步回调的线性实现

State Threads——异步回调的线性实现 原文链接:http://coolshell.cn/articles/12012.html 本文的标题看起来有点拗口,其实State Threads库就是在单线程中使用同步编程思想来实现异步的处理流程,从而实现单线程能并发处理成百上千个请求,而且每个请求的处理过程是线性的,没有使用晦涩难懂的callback机制来衔接处理流程. ST (State Threads) 库提供了一种高性能.可扩展服务器(比如web server.proxy server

关于C10K、异步回调、协程、同步阻塞

最近到处在争论这些话题,发现很多人对一些基础的常识并不了解,在此发表一文做一下解释.此文未必能解答所有问题,各位能有一个大致的了解就好. C10K的由来 大家都知道互联网的基础就是网络通信,早期的互联网可以说是一个小群体的集合.互联网还不够普及,用户也不多.一台服务器同时在线100个用户估计 在当时已经算是大型应用了.所以并不存在什么C10K的难题.互联网的爆发期应该是在www网站,浏览器,雅虎出现后.最早的互联网称之为Web1.0, 互联网大部分的使用场景是下载一个Html页面,用户在浏览器中

异步回调/我们为什么要使用NodeJS

1.原文转载自:http://limu.iteye.com/blog/1013223 原文转载自:http://blog.csdn.net/zhangliangzi/article/details/52066560 2.说到"调用",模块之间总是存在这一定的接口,模块之间通过这些接口调用以通信联系,从调用方式上看,可以分为三类:同步调用.回调和异步调用. 同步调用是一种阻塞式调用,也是我们在写程序中经常使用的: 回调是一种双向的调用模式: 异步调用是一种类似消息或事件的机制,解决了同步

深入学习Web Service系列----异步开发模式

概述 在本篇随笔中,通过一些简单的示例来说一下Web Service中的异步调用模式.调用Web Service方法有两种方式,同步调用和异步调用.同步调用是程序继续执行前等候调用的完成,而异步调用在后台继续时,程序也继续执行,不必等待方法处理完成而直接返回.具体的调用流程见下图: 对于同步调用方法而言,UI线程依赖于方法的实现,方法执行时间过长将导致UI无法及时与用户进行交互.我们知道,在Windows客户端中,每个进程都有单一的UI进程,在服务器中,可扩展性依赖于线程的使用.对于异步调用方法

异步回调

作者:禅楼望月(http://www.cnblogs.com/yaoyinglong) 1.开始讲故事: 午饭的时候到了,可是天气太冷,根本不想出办公室的门,于是你拨通了XXX饭店的订餐电话"喂!你好,我是XXX公司的小菜,我要点--".然后以继续干你的工作了,过了一会儿,"你好,是XXX公司的小菜吧,你的午饭到了".这个过程便是一个典型的异步回调.那么我们来看一下,这个里面有什么必须的条件: XXX饭店必须有送饭的业务: 你必须接受饭菜,如果你不接受饭菜,你就吃不

深入理解yield(三):yield与基于Tornado的异步回调

转自:http://beginman.cn/python/2015/04/06/yield-via-Tornado/ 作者:BeginMan 版权声明:本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接. 发表于 2015-04-06 在深入理解yield(二):yield与协程 和深入理解yield(一):yield原理已经对yield原理及在python中的运用了解了很多,那么接下来就要结合Tornado,进行python异步的分析. 一.异步的实

异步模块模式

简介 众所周知,模块化开是会将复杂的系统分解成高内聚.低耦合的模块,使系统开发变得可控.可维护.可拓展,提高模块复用率.而在js中,异步模块模式的情况则比较多,所谓异步模块模式,是在请求发出后,继续其他业务逻辑,直到模块加载完成后执行后续的逻辑,实现模块开发中对模块加载完成后的引用. 今天就来分析一下异步加载模块,本文通过创建与调度模块.加载模块和设置模块三个方面来分析 创建与调度模块 创建与调度方法集模块创建方法于一身.在这个方法中腰遍历所有依赖模块,并判断所有模块都存在才可执行回调函数,否则