gpt4 book ai didi

ios - 在 NSoperationQueue 上调用 -(void) cancelAllOperations 不会设置队列中存在的 NSOperation 的 isCancelled 属性

转载 作者:可可西里 更新时间:2023-11-01 03:33:51 27 4
gpt4 key购买 nike

我面临与 NSoperationQueue 相关的问题。在我的代码中:

-(void) viewDidLoad
{
//Initialisation of queue and operation.
//adding operation to queue
[self.operationQueue addOperation:op];

}

-(void) viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[self.operationQueue cancelAllOperations];
}

所以在执行我的 NSOperation 主函数期间,当我检查 isCancelled 属性时,它总是返回 NO。事实上在调用 NSOperationQueue 上的 cancellAllOperation 之后。例如。

-(void)main
{
if(self.isCancelled)
{
// Never executing this block :-(
}

}

有关更多详细信息,我正在我的 NSOperation 中进行一些网络调用。当我切换到其他 View 时,将调用 cancelAllOperation。当网络响应在我的 NSOperation 中返回时,我正在检查 if(Self.isCancelled),现在我在另一个 View 中(意味着 isCancelled 应该设置为 YES)。但是这个检查总是失败。

最佳答案

viewDidLoad 中加载 View 后,您的操作就被添加到队列中,然后队列将承担开始操作的责任。

由于您在 View 消失 (viewWillDisappear) 时取消操作,因此操作很可能会在此时完成。换句话说,您的操作在终止后被取消。您可以检查 isExecuting 属性以了解该操作是否正在运行。

关于ios - 在 NSoperationQueue 上调用 -(void) cancelAllOperations 不会设置队列中存在的 NSOperation 的 isCancelled 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16386317/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com