SEL didStartSelector;
SEL didReceiveResponseHeadersSelector;
SEL willRedirectSelector;
SEL didFinishSelector;
SEL didFailSelector;
SEL didReceiveDataSelector;
各种SEL 的调用时机。
1: SEL didStartSelector;
- (void)startRequest 一开始就调用了requestStarted。
[self performSelectorOnMainThread:@selector(requestStarted) withObject:nil waitUntilDone:[NSThread isMainThread]];
/* ALWAYS CALLED ON MAIN THREAD! */
- (void)requestStarted
{
if ([self error] || [self mainRequest]) {
return;
}
if (delegate && [delegate respondsToSelector:didStartSelector]) {
[delegate performSelector:didStartSelector withObject:self];
}
if (queue && [queue respondsToSelector:@selector(requestStarted:)]) {
[queue performSelector:@selector(requestStarted:) withObject:self];
}
#if NS_BLOCKS_AVAILABLE
if(startedBlock){
startedBlock();
}
#endif
}
2: SEL didReceiveResponseHeadersSelector;
/* ALWAYS CALLED ON MAIN THREAD! */
- (void)requestReceivedResponseHeaders:(NSMutableDictionary *)newResponseHeaders
{
if ([self error] || [self mainRequest]) {
return;
}
if (delegate && [delegate respondsToSelector:didReceiveResponseHeadersSelector]) {
[delegate performSelector:didReceiveResponseHeadersSelector withObject:self withObject:newResponseHeaders];
}
if (queue && [queue respondsToSelector:@selector(request:didReceiveResponseHeaders:)]) {
[queue performSelector:@selector(request:didReceiveResponseHeaders:) withObject:self withObject:newResponseHeaders];
}
#if NS_BLOCKS_AVAILABLE
if(headersReceivedBlock){
headersReceivedBlock(newResponseHeaders);
}
#endif
}
3: SEL willRedirectSelector;
/* ALWAYS CALLED ON MAIN THREAD! */
- (void)requestWillRedirectToURL:(NSURL *)newURL
{
if ([self error] || [self mainRequest]) {
return;
}
if (delegate && [delegate respondsToSelector:willRedirectSelector]) {
[delegate performSelector:willRedirectSelector withObject:self withObject:newURL];
}
if (queue && [queue respondsToSelector:@selector(request:willRedirectToURL:)]) {
[queue performSelector:@selector(request:willRedirectToURL:) withObject:self withObject:newURL];
}
}
SEL requestFinished
/* ALWAYS CALLED ON MAIN THREAD! */
- (void)reportFinished
{
if (delegate && [delegate respondsToSelector:didFinishSelector]) {
[delegate performSelector:didFinishSelector withObject:self];
}
if (queue && [queue respondsToSelector:@selector(requestFinished:)]) {
[queue performSelector:@selector(requestFinished:) withObject:self];
}
#if NS_BLOCKS_AVAILABLE
if(completionBlock){
completionBlock();
}
#endif
}
SEL requestFailed
/* ALWAYS CALLED ON MAIN THREAD! */
- (void)reportFailure
{
if (delegate && [delegate respondsToSelector:didFailSelector]) {
[delegate performSelector:didFailSelector withObject:self];
}
if (queue && [queue respondsToSelector:@selector(requestFailed:)]) {
[queue performSelector:@selector(requestFailed:) withObject:self];
}
#if NS_BLOCKS_AVAILABLE
if(failureBlock){
failureBlock();
}
#endif
}
分享到:
相关推荐
ASIHTTPRequest
基于ASIHttpRequest 网络框架实现,可以实现多个任务同时下载,断点续传等功能 ,用于ios客户端下载功能实现
AS在ARC模式下警告繁多,即使一一修改过也会出现问题,做成静态库可以避免,本来是想做成动态的但是不知道模拟器和真机两种怎么合并,分享一下
ASIHTTPRequest+UITableView实现多个下载任务,没用到重用机制,还有没有实现断点续载,很简单的一个demo,相信初学者都能看懂,还写了一些注释。
利用ASIHttp第三方库,,获取网络请求,,获得天气预报,,,代码显示天气预报效果默认是河南郑州,,亲们可以自己输入并查询自己想知道的城市天气情况,,堪比真机天气
异步下载图片 进度显示 里面有注释,简单易懂。
ASIHTTPRequest的详细介绍还包括 同步 异步 缓存 请求网络数据与传输数据
如题所示: ASIHTTP+JSON+Google地图,多线程实现加载DEMO, iphone 平台下经典代码
网络编程有力助手,让我们的开发不在重复!更好 更快!你懂得!
ASIHTTPRequest的简单实用,实现异步队列下载图片,并结合进度条显示下载动态,限制了同时下载线程为3,可修改
整理的一些市面上常见的第三方类库,快速集成可以方便开发,这些都是大家常用的。 里面包含: GTM 各种加密 ASIHttp http请求 KissXml xml解析 json oc版 json cpp版 Reachabiliy 网络状态判断 libcurl c语言静态...
ASIHTTPRequest第三方库 使用该库可以轻松地请求 放在这里本着和大家一起学习地目的 欢迎大家下载使用 用什么不懂的请留言
在网络访问时,一般都建议用异步访问,但是异步访问的话,需要传入delegate,并处理回调。不利于将所有的网络访问的方法集中到一个类中,所以我采用同步访问的方式。后来产品部们要求网络访问可以取消,但是ASIHTTP ...
同步与异步 ASIHTTP NSURL
根据官方安装流程所整理出来的必要ASIHTTPRequest资源库包
网络请求第三方库的应用 asihttprequest
ASIHTTPRequest是简单易用的,它封装了CFNetwork API。使得与Web服务器通信变得更简单。它是用Objective-C编写的,可以在MAC OS X和iPhone应用中使用。 ...ASIFormDataRequest子类可以简单的实现提交数据和文件。
这时ios中的使用asihttp类库上传文件到php服务器,关于php服务器接收文件见我的另一篇文章
ASIHttp的使用 xml解析 自定义cell
此压缩包包括:ASIHTTP三方库,练习上传下载的Demo和练习的服务器,具体步骤也可参考本人博客,谢谢