2

在我的应用程序中,我通过循环我想要对其执行一些操作的文件数组来向我的 NSOperationQeueu 添加并发操作。我想知道队列何时为空并且所有操作都已完成,因此我使用(缩短版):

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{

        if (object == myLocalModeController.myFileobjectsQueue && [keyPath isEqualToString:@"operations"]) {


        if ([myLocalModeController.myFileobjectsQueue.operations count] == 0) {
            NSLog(@"Local: Fileobject creation has completed");  
          }
        }
     }

我的问题是,有时这些操作非常轻量级,以至于它们在队列仍在添加时立即完成。这导致队列中的项目数为零但操作尚未完成的频繁发生。但是,根据我当前的设置,程序认为操作自“[myLocalModeController.myFileobjectsQueue.operations count] == 0”以来已经完成。有关如何确保队列确实完成并且所有操作都已结束的任何建议?谢谢。干杯,特隆德

4

1 回答 1

2

您可能希望在使用 setSuspended 添加操作时阻止所有操作:

- (void)setSuspended:(BOOL)suspend;

因此,在添加所有操作之前将其设置为“是”,完成后将其设置为“否”。

于 2013-02-22T19:36:50.577 回答