如何在不添加到iPhone的NSOperationQueue的情况下使NSOperation并发

时间:2011-08-22 07:45:24

标签: iphone concurrency nsoperation

我试图通过从NSOperation继承来创建一个NSOperation。我希望我的操作在一个单独的线程上执行,并且它应该支持取消选项,即我应该能够在任何时候停止线程(或操作)时间点。我尝试将我的操作实例添加到NSOperationQueue,一切正常但是“操作”在一段时间后执行,这使我的应用程序变慢。所以我尝试通过调用[theOperation start];单独运行我的操作快速但在主线程上执行。如何使用取消选项使NSOperation在单独的线程上运行请帮助。

2 个答案:

答案 0 :(得分:0)

我认为您需要实施- (BOOL)isConcurrent

- (BOOL)isConcurrent
{
    return YES;
}

但有影响。阅读Apple reference docs on NSOperation,尤其是 Subclassing Notes 部分。另请注意,如果您希望取消操作,则需要自己实现取消行为:例如,在main选择器中,您需要检查操作是否已取消,如果有,则立即返回。< / p>

答案 1 :(得分:0)

或者:

1)不要使它成为NSOperation并明确地创建一个线程。

2)使用第二个操作队列和/或提高优先级。

3)使用容器类型作为结果。当您需要它时,取消后台加载操作并手动加载。