NSOperation 取消:NSInvocationOperation 还是 NSOperation 子类?

Mat*_*ing 5 iphone objective-c nsoperation ipad

我有一个相当简单但很昂贵的任务,我需要在后台运行,这是标准的 NSOperation 情况。我还需要确保操作支持取消,并适当停止。鉴于该要求,哪种方法更好:将昂贵的方法调用包装在 NSInvocationOperation 中,还是从头开始编写 NSOperation 子类?

到目前为止,这是我的想法。NSInvocationOperations 是我的第一选择,也是我过去使用过的,因为任务非常简单,我不想编写一个包含所有 NSOperation 样板代码的整个类来执行它。现在让我犹豫的是,在 NSInvocationOperation 中执行的方法似乎并没有真正的方法来检查不会在我脑海中引发黑客警报的取消。有关所述黑客的一些示例,请参阅此问题。我试过它们,它们确实有效,但它们也感到恶心。

如前所述,编写一个 NSOperation 子类对于执行简单的任务似乎有点过分,但毫无疑问,检查取消比我遇到的任何 NSInvocationOperation 都更优雅。

那么,对于那些拥有更多 NSOperations 的人来说,你最成功的结局是什么?是否有使用 NSInvocationOperations 的不错的取消解决方案,但我可能错过了?如果没有对取消的某种支持,NSInvocationOperations 有用的情况的数量就会急剧下降。

jus*_*tin 1

只是 NSOperation 的子类。(需要更多字符)