首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在取消请求时,NSOperation究竟是何时从NSOperationQueue中删除的?

在取消请求时,NSOperation究竟是何时从NSOperationQueue中删除的?
EN

Stack Overflow用户
提问于 2014-09-17 06:25:06
回答 1查看 1.7K关注 0票数 5

我正在阅读一些文档,解释如何在NSOperation中管理NSOperationQueue。我的重点是,如果用户按下进度面板中的“取消”按钮或退出应用程序,则始终不执行该操作。因此,取消操作以防止其不必要地占用CPU时间。

因此,每当需要取消操作时,我都应该触发cancel方法,以防止进一步的执行。然后,我必须定期使用操作对象状态isCancelled来检查操作是否被取消。以下是我的问题:

(1)在取消请求时,如果NSOperation被从NSOperationQueue中删除,那么我们如何仍然引用该NSOperation及其属性isCancelled?

根据Apple Developer类参考资料:

NSOperationQueue类控制一组NSOperation对象的执行。添加到队列后,操作将保留在该队列中,直到显式取消或完成其任务为止。

(2)如果我使用ARC,是否需要考虑取消请求?我只是举个例子。我有两个视图控制器A和B。在B中,我使用NSURLRequest制作8-10个NSOperation,并将所有请求放在NSOperationQueue中。这里NSOperationQueue的对象是视图控制器B的属性。因此,如果用户按后退按钮返回视图A,在NSOperationQueue下,NSOperationQueue对象应该自动删除(我弹出查看A)。是所有操作都会被ARC机制取消,还是我应该有一些机制来避免无用的执行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-17 06:39:10

首先,只有当队列的isFinished属性变为true时,才会从队列中删除操作。

其次,如果您去分配B,那么队列将被释放,并且操作也会被释放。但是,您应该确保代码中没有引用这些操作对象或稍后的队列。

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

https://stackoverflow.com/questions/25883679

复制
相关文章

相似问题

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