首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从另一个NSOperation取消NSOperation

从另一个NSOperation取消NSOperation
EN

Stack Overflow用户
提问于 2013-12-01 23:46:17
回答 1查看 208关注 0票数 1

我有一个NSOperation队列,其中运行了四个NSOperations。

代码语言:javascript
复制
NSOperationQueue myQueue = [[NSOperationQueue alloc] init];
NSOperation readOperation = [[NSOperation alloc] init];
NSOperation postOperation = [[NSOperation alloc] init];
NSOperation deleteOperation = [[NSOperation alloc] init];

我知道取消可以称为NSOperation对象。如果我打电话给

代码语言:javascript
复制
[postOperation cancel];

它会立即从myQueue取消吗?

另外,我想从deleteOperation中取消postOperation。

这行得通吗?

代码语言:javascript
复制
postOperation = [NSBlockOperation blockOperationWithBlock: ^{
                                [deleteOperation cancel];
                                /**** do a HTTP post ****/
                                }];
[myQueue addOperation:postOperation];

实际上,如果执行了删除操作,则在执行POST之前,我希望取消该操作。也是

代码语言:javascript
复制
[myQueue setMaxConcurrentOperationCount:1];

确保操作队列是FIFO?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-02 00:54:07

根据NSOperation文档:

..。如果某个操作处于队列中,但等待未完成的依赖操作,则这些操作随后将被忽略。..。允许操作队列更快地调用操作的开始方法,并将对象清除出队列。

队列将立即调用操作的start方法,然后将其标记为已完成,而不需要做任何有用的工作。

请注意,您可以重写此方法是子类。苹果要求您创建与NSOperation相同的行为,但这仍然取决于开发人员。

[myQueue setMaxConcurrentOperationCount:1];是否确保操作队列是FIFO?

这是另外一个问题。答案是否定的。除了设置依赖项之外,您无法控制操作顺序(这是您应该做的事情)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20318711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档