我有一个对象 ( Processor
),其中包含几个执行冗长计算的方法。我想在主线程和NSOperation
子类中都使用这些方法。
在我的NSOperation
子类代码中,我反复调用isCancelled
,所以取消是相当敏感的。但是,当操作调用其中一个冗长的Processor
方法时,它无法响应取消,直到该方法返回。
是否有一种编写方法的好方法,以便它们可以在有操作和没有操作的情况下使用?我正在考虑operation
为我的 CPU 密集型Processor
方法添加一个参数并像这样编写它们:
- (void)calculateWithOperation:(NSOperation *)operation {
do {
if (operation != nil && [operation isCancelled]) {
return;
}
// Do some more calculation...
} while (! finished);
}
// For convenient main thread execution.
- (void)calculate {
[self calculateWithOperation:nil];
}
以前有没有其他人遇到过这个问题?有没有更好的办法?