cancelAllOperations对[NSOperationQueue mainQueue]不起作用

时间:2011-12-21 13:38:05

标签: ios nsoperationqueue

cancelAllOperations()无法在mainQueue上运行(cancel()对象上未调用NSOperation方法。我错过了什么吗? 我必须遍历所有操作并调用cancel()方法才能使其正常工作。

2 个答案:

答案 0 :(得分:5)

我还可以确认cancelAllOperations对[NSOperationQueue mainQueue]不起作用(至少在我的iOS 5.0模拟器上)。可能是故意设计的,因为它是一个共享实例。

我的简单解决方法是在不覆盖任何内容的情况下继承NSOperation或NSBlockOperation,然后执行以下操作:

-(void)cancelMyOperationsInMainQueue {    
    for (NSOperation* o in [[NSOperationQueue mainQueue] operations]) {
        if ([o isKindOfClass:[MyOperation class]]) {
            [o cancel];
        }
    }
 }

答案 1 :(得分:0)

是的还可以确认它没有在操作上调用取消方法,它只是设置isCancelled = YES

我的解决方案:[[[NSOperationQueue mainQueue] operations] makeObjectsPerformSelector:@selector(cancel)];