我试图通过从NSOperation继承来创建一个NSOperation。我希望我的操作在一个单独的线程上执行,并且它应该支持取消选项,即我应该能够在任何时候停止线程(或操作)时间点。我尝试将我的操作实例添加到NSOperationQueue,一切正常但是“操作”在一段时间后执行,这使我的应用程序变慢。所以我尝试通过调用[theOperation start];
单独运行我的操作快速但在主线程上执行。如何使用取消选项使NSOperation在单独的线程上运行请帮助。
答案 0 :(得分:0)
我认为您需要实施- (BOOL)isConcurrent
:
- (BOOL)isConcurrent
{
return YES;
}
但有影响。阅读Apple reference docs on NSOperation,尤其是 Subclassing Notes 部分。另请注意,如果您希望取消操作,则需要自己实现取消行为:例如,在main
选择器中,您需要检查操作是否已取消,如果有,则立即返回。< / p>
答案 1 :(得分:0)
或者:
1)不要使它成为NSOperation并明确地创建一个线程。
2)使用第二个操作队列和/或提高优先级。
3)使用容器类型作为结果。当您需要它时,取消后台加载操作并手动加载。