我有一个NSOperation队列,其中运行了四个NSOperations。
NSOperationQueue myQueue = [[NSOperationQueue alloc] init];
NSOperation readOperation = [[NSOperation alloc] init];
NSOperation postOperation = [[NSOperation alloc] init];
NSOperation deleteOperation = [[NSOperation alloc] init];我知道取消可以称为NSOperation对象。如果我打电话给
[postOperation cancel];它会立即从myQueue取消吗?
另外,我想从deleteOperation中取消postOperation。
这行得通吗?
postOperation = [NSBlockOperation blockOperationWithBlock: ^{
[deleteOperation cancel];
/**** do a HTTP post ****/
}];
[myQueue addOperation:postOperation];实际上,如果执行了删除操作,则在执行POST之前,我希望取消该操作。也是
[myQueue setMaxConcurrentOperationCount:1];确保操作队列是FIFO?
发布于 2013-12-02 00:54:07
根据NSOperation文档:
..。如果某个操作处于队列中,但等待未完成的依赖操作,则这些操作随后将被忽略。..。允许操作队列更快地调用操作的开始方法,并将对象清除出队列。
队列将立即调用操作的start方法,然后将其标记为已完成,而不需要做任何有用的工作。
请注意,您可以重写此方法是子类。苹果要求您创建与NSOperation相同的行为,但这仍然取决于开发人员。
[myQueue setMaxConcurrentOperationCount:1];是否确保操作队列是FIFO?
这是另外一个问题。答案是否定的。除了设置依赖项之外,您无法控制操作顺序(这是您应该做的事情)。
https://stackoverflow.com/questions/20318711
复制相似问题