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