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