gpt4 book ai didi

nsoperation - NSOperations及其完成 block 是否同时运行?

转载 作者:行者123 更新时间:2023-12-04 18:12:14 26 4
gpt4 key购买 nike

我在NSOperations中添加了一堆NSOperationQueue。操作队列的maxConcurrentOperationCount设置为1,因此NSOperations依次运行。

现在,在completionBlockNSOperation中,我想通过调用NSOperations上的cancelAllOperations取消所有待处理的NSOperationQueue

这样安全吗?我可以确定仅在完全执行上一个操作的start之后才调用下一个操作的completionBlock -method吗?还是上一个操作的completionBlock和当前操作的任务同时运行?

我问这个问题的原因:我使用AFNetworking执行一批AFHTTPRequestOperations,并且仅当该批次的所有先前请求都成功时才希望执行一个请求。

最佳答案

我在下面的发现似乎不再是事实。我已经在iOS 8和iOS 9上重新运行测试,并且操作的完成块始终与下一个操作同时运行。目前,我看不到一种使操作等待上一个完成块完成的方法。

我只是在一个示例项目中尝试了这种情况。结果如下:

如果NSOperationQueuemaxConcurrentOperationCount设置为1,则NSOperationcompletionBlock和队列中的下一个NSOperation同时运行。

但是,如果通过调用NSOperation将每个addDependency:链接到其先前的操作,则该操作的执行将一直等到先前操作的completionBlock完成。

因此,如果要取消当前操作的completionBlock中的下一个操作,并确保在开始操作之前取消了该操作,则必须通过调用NSOperations来设置addDependency:之间的依赖关系

关于nsoperation - NSOperations及其完成 block 是否同时运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11413156/

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