我正在使用 NSOperationQueue 的 addOperationWithBlock。在 block 内,我如何检查我是否应该取消操作?或者访问任何 NSOperation 属性/方法?
[myOperationQueue addOperationWithBlock: ^{
while ( /* long running loop */ )
{
// how to determine here if I need to cancel?
// for that matter, access any NSOperation properties/methods?
}
}];
执行此操作的更好方法是使用 NSBlockOperation 吗?
最佳答案
更好的解决方案可能是使用 NSBlockOperation
并将其添加到队列而不是原始 block 。你可以这样做:
__block NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
while(![operation isCancelled]){
//Some long operation
}
}];
[[self queue] addOperation:operation];
这让您可以使用 block ,同时让您对操作有更多的控制......还有一些 NSOperation
细节(例如添加完成 block 的能力)。
关于iphone - 如何取消使用 addOperationWithBlock 创建的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4962673/