1

我正在使用 NSOperationQueue 来获取设备的照片。当我回去时,我在打电话

[queue cancelAllOperations];
[queue waitUntilAllOperationsAreFinished];

这些线取消操作。操作取消得很好,但是返回上一页需要一些时间。

如何减少时间延迟。提前致谢

4

1 回答 1

1

cancelAllOperations 不会立即取消当前正在执行的 NSOperation,它只会向它发送取消消息(请参阅文档)。您可以定期检查操作是否已取消。例如:

if (!self isCancelled) {
    // continue executing
}

或者,您可以使用 Key Value Observer 来监视 -cancel 信号(此处的示例)。

作为旁注,在“cancelAllOperations”之后调用“waitUntilAllOperationsAreFinished”是多余的。由于您首先调用 cancelAllOperations,它应该立即返回。

最后,如果您还没有阅读并发编程指南,我强烈建议您阅读。多线程是一个非常复杂但非常宝贵的编程工具,它极大地帮助我理解了 Objective-C 实现的原理。

于 2012-05-30T03:36:16.817 回答