我想在执行请求时添加操作。我了解过ASINetworkQueue,但它会添加所有操作并运行它们。但我想将操作添加到正在运行的队列中。
这种做法可行吗?我无所谓使用ASIHTTPRequest还是AFNetworking,只要能实现我的意图。
编辑
当我尝试添加另一个请求时,出现以下错误:
[ASINetworkQueue addOperation:]: operation is executing and cannot be enqueued'
我想在执行请求时添加操作。我了解过ASINetworkQueue,但它会添加所有操作并运行它们。但我想将操作添加到正在运行的队列中。
这种做法可行吗?我无所谓使用ASIHTTPRequest还是AFNetworking,只要能实现我的意图。
当我尝试添加另一个请求时,出现以下错误:
[ASINetworkQueue addOperation:]: operation is executing and cannot be enqueued'
根据苹果文档提供的有关addOperation:
的信息,很明显你不能将正在执行的操作添加到NSOperationQueue
中。
以下是它所述的内容:
一个操作对象一次最多只能在一个操作队列中,并且如果该操作已经在另一个队列中,则此方法会抛出NSInvalidArgumentException异常。同样,如果该操作当前正在执行或已经完成执行,则此方法也会抛出NSInvalidArgumentException异常。
这是NSOperationQueue
的默认行为。在将NSOperation
添加到队列之前,您需要确保它没有在执行。可以使用各种属性,例如isExecuting
、isFinished
等来进行检查。
isExecuting
和isFinished
,如果您尝试在同一队列中两次排队相同的操作,则会抛出错误operation is executing and cannot be enqueued
。在将操作再次排队到同一队列之前,您必须重新初始化该操作。 - kas-kadaddOperation
。在asi
中,对于它的ASiNetworkQueue
来说,它是否正在运行都不重要。[ASINetworkQueue addOperation:]:操作正在执行,无法排队
- HelmiB