博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASINetworkQueue 与 NSOperationQueue区别
阅读量:2397 次
发布时间:2019-05-10

本文共 1069 字,大约阅读时间需要 3 分钟。

转载自:http://www.dreamingwish.com/dream-2011/powerful-asihttprequest-library-two.html

对于ASINetworkQueue

ASINetworkQueue是NSOperationQueue的子类,提供更高级的特性(ASINetworkQueue的代理函数):

  • requestDidStartSelector
    当一个request开始执行时,这个代理函数会被调用。
  • requestDidReceiveResponseHeadersSelector
    当队列中的request收到服务器返回的头信息时,这个代理函数会被调用。对于下载很大的文件,这个通常比整个request的完成要早。
  • requestDidFinishSelector
    当每个request完成时,这个代理函数会被调用。
  • requestDidFailSelector
    当每个request失败时,这个代理函数会被调用。
  • queueDidFinishSelector
    当队列完成(无论request失败还是成功)时,这个代理函数会被调用。

ASINetworkQueues与NSOperationQueues稍有不同,加入队列的request不会立即开始执行。如果队列打开了进度开关,那么队列开始时,会先对所有GET型request进行一次HEAD请求,获得总下载大小,然后真正的request才被执行。

向一个已经开始进行的ASINetworkQueue 加入request会怎样?

如果你使用ASINetworkQueue来跟踪若干request的进度,只有当新的request开始执行时,总进度才会进行自适应调整(向后移动)。ASINetworkQueue不会为队列开始后才加入的request进行HEAD请求,所以如果你一次向一个正在执行的队列加入很多request,那么总进度不会立即被更新。

如果队列已经开始了,不需要再次调用[queue go]。

当ASINetworkQueue中的一个request失败时,默认情况下,ASINetworkQueue会取消所有其他的request。要禁用这个特性,设置 [queue setShouldCancelAllRequestsOnFailure:NO]

ASINetworkQueues只可以执行ASIHTTPRequest操作,二不可以用于通用操作。试图加入一个不是ASIHTTPRequest的NSOperation将会导致抛出错误。

你可能感兴趣的文章
Architecture Strategies for Catching the Long Tail (转)
查看>>
读书笔记-《J2EE核心模式》
查看>>
SaaS在中国抓住“长尾”需特殊商业模式(转)
查看>>
SaaS炒作似乎过了头 怀疑论接踵而来(转)
查看>>
使用SaaS模式应规避四大风险(转)
查看>>
调用mosquitto发布消息
查看>>
adr与ldr区别(Mini2440裸机程序阐述)
查看>>
ARM嵌入式开发中的GCC内联汇编__asm__
查看>>
韦东山书中MMU内嵌汇编代码
查看>>
ARM保存中断时,为什么使用“sub lr, lr, #4”
查看>>
Makefile中.PHONY的含义
查看>>
韦东山视频实验之Input子系统分析之一
查看>>
韦东山视频实验之Input子系统分析之二
查看>>
韦东山视频实验之触摸屏
查看>>
dma_alloc_writecombine
查看>>
韦东山视频之LCD驱动(Mini2440 X35)
查看>>
韦东山视频实验之USB鼠标驱动
查看>>
韦东山视频实验之USB鼠标驱动—OOPS错误分析
查看>>
python异常处理
查看>>
python创建字典
查看>>