Iphone 如何停止使用NSOperationQueue启动的任务?
我以以下方式使用NSOperationQueue创建了一个进程:Iphone 如何停止使用NSOperationQueue启动的任务?,iphone,ios,nsoperationqueue,Iphone,Ios,Nsoperationqueue,我以以下方式使用NSOperationQueue创建了一个进程: queue = [[NSOperationQueue alloc]init]; NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selec
queue = [[NSOperationQueue alloc]init];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self
selector:@selector(loadDataWithOperation)object:nil];
[queue addOperation:operation];
[operation release];
在loadDataWithOperation
方法中,我编写了打印无限数的代码
现在我调用了cancelAppOperations来停止它的执行,并且我还尝试像这样将挂起的值设置为YES
[queue setSuspended:YES]
即使进程仍在运行,我仍使用“stop”按钮调用stoping方法。它正在调用同一个类
如何停止它?您可以在队列中的所有操作开始执行之前向它们发送取消消息,但如果您的操作已经在执行,则需要在此处处理取消消息以暂停队列 [queue setSuspended:YES]工作正常,我在那里检查停止for循环的条件,即
if(![queue isSuspended])
{
NSLog(@"elements are :%d",i);
}
else
{
break;
}
我将这几行代码放在“loadDataWithOperation”方法中您何时调用cancel,从何处调用?以进一步展开此答案:NSOperation子类实例需要检查其取消。如果正在执行网络操作或解析/数据库操作,则在执行的某些点上,需要检查cancel属性以检查对象是否已接收到cancel操作。换句话说,NSO操作不会为您自动取消。这必须在NSOperation子类中完成。