NSOperation取消:NSInvocationOperation还是NSOperation子类?

5
我有一个相当简单但昂贵的任务需要在后台运行,这是标准的NSOperation情况。我还需要确保该操作支持取消并适当停止。鉴于此要求,哪种方法更好:只需将昂贵的方法调用包装在NSInvocationOperation中,还是从头编写NSOperation子类?
到目前为止,我的想法是NSInvocationOperations是我的首选,也是我过去使用的方式,因为任务非常简单,我不想编写整个类和所有NSOperation样板代码来执行它。现在让我犹豫的是,似乎没有一种方法可以让在NSInvocationOperation中执行的方法检查取消,而不会在我的脑海中引起恶心的警报。请参见this question,了解某些所述hackery的示例。我尝试过它们,它们确实有效,但感觉很恶心。
如前所述,编写NSOperation子类似乎过度设计以执行简单任务,但毫无疑问,检查取消比我遇到的任何NSInvocationOperation都更优雅。

对于那些已经掌握了更多NSOperations的人来说,你们最成功地使用了哪些?是否有一种漂亮的取消解决方案,使用NSInvocationOperations,我可能错过了?如果没有某种形式的取消支持,那么NSInvocationOperations有用的情况就会急剧减少。

2个回答

2

我相信子类化NSOperation是唯一优雅的方法来实现这个目标。

当我重构现有代码以支持多线程时,我倾向于仅使用NSInvocationOperations,因为它是一个方便的快捷方式。


随着我深入研究Obj-C/iOS,我发现一开始看起来过于冗长的做事方式实际上鼓励更好的代码结构,并提供更多的功能或允许你避免重复造轮子。 - jinglesthula

1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接