2011-03-17 56 views
4

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

这是我迄今为止的想法。 NSInvocationOperations是我的第一选择,也是我过去使用过的,因为任务非常简单,我不想用全部NSOperation样板代码编写一个完整的类来执行它。现在让我犹豫的事实是,似乎没有办法让NSInvocationOperation中执行的方法检查没有引发我头脑中黑客警报的取消。查看this question查看hackery的一些示例。我尝试了他们,他们确实工作,他们也感到恶心。

写一个子类的NSOperation,如前面提到的,似乎有点小题大做执行简单的任务,但毫无疑问的是检查取消比什么我已经遇到了NSInvocationOperation更优雅。

那么,对于那些拥有更多国家统计局的人来说,哪些方面你已经习惯了最成功的结局?是否有一个很好的取消解决方案使用NSInvocationOperations,我可能错过了?如果没有对取消的支持,那么NSInvocationOperations有用的情况就会消失。

回答

1

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

2

子类NSOperation是唯一的优雅的方式来做到这一点,我相信。

我倾向于使用NSInvocationOperations,当我重构现有的代码是多线程的,然后它是一个方便的捷径。

+0

+1当我深入研究Obj-C/iOS时,我发现起初看起来过于冗长的做事方式实际上最终会促成更好的代码结构,并提供更多的功能或允许您避免重新发明轮子。 – jinglesthula 2011-07-02 18:23:30