我正在使用NSOperationQueue来获取设备的照片。当我回去时我正在打电话
[queue cancelAllOperations];
[queue waitUntilAllOperationsAreFinished];
这些行取消操作。操作取消很顺利,但回到上一页需要一些时间。
如何减少时间延迟。 提前致谢
答案 0 :(得分:1)
cancelAllOperations不会立即取消当前正在执行的NSOperation,它只会向其发送取消消息(请参阅文档)。您可以定期检查操作是否已取消。例如:
if (!self isCancelled) {
// continue executing
}
或者你可以通过一个Key Value Observer来监控-cancel信号(例如here)。
作为旁注,在“cancelAllOperations”之后调用“waitUntilAllOperationsAreFinished”是多余的。由于您首先调用cancelAllOperations,它应该立即返回。
最后,如果您还没有,我强烈建议您阅读Concurrency Programming Guide。多线程是一个非常复杂但非常宝贵的编程工具,它帮助我理解Objective-C实现的原理。