我有一个相当简单但很昂贵的任务需要在后台运行,这是标准的NSOperation情况。我还需要确保操作支持取消,并适当地停止。考虑到这一需求,哪种方法更好:只是将代价高昂的方法调用包装在NSInvocationOperation中,还是从头开始编写NSOperation子类?
这是我到目前为止的想法。NSInvocationOperations是我的首选,也是我过去用过的,因为这个任务太简单了,我不想仅仅为了执行它而编写一个包含所有NSOperation样板代码的完整类。现在让我犹豫不决的是,在NSInvocationOperation中执行的方法似乎真的没有一种方法来检查取消,而不会在我脑海中引发黑客警报。有关上述黑客攻击的一些示例,请参阅this question。我试过了,它们确实起作用了,但它们也感觉很恶心。
如前所述,编写一个NSOperation子类来执行这个简单的任务似乎有点过分,但毫无疑问,检查取消比我在NSInvocationOperation中遇到的任何东西都要优雅。
那么,对于那些拥有更多NSOperations的人来说,你习惯了哪种方式最成功呢?有没有我可能错过的使用NSInvocationOperations的好的取消解决方案?如果没有对取消的某种支持,那么NSInvocationOperations有用的情况就会越来越多。
发布于 2011-03-18 04:21:25
只是NSOperation的子类。(需要更多字符)
发布于 2011-03-18 04:26:11
我相信,对NSOperation进行子类化是实现这一点的唯一优雅方法。
我倾向于只在将现有代码重构为多线程时才使用NSInvocationOperations,这是一个很方便的捷径。
https://stackoverflow.com/questions/5344667
复制相似问题