cancelAllOperations对[NSOperationQueue mainQueue]不起作用

Ale*_*der 9 nsoperationqueue ios

cancelAllOperations()不适用于mainQueue(该cancel()方法未在该NSOperation对象上调用).我错过了什么吗?我必须遍历所有操作并调用cancel()方法才能使其工作.

Rol*_*n_s 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];
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)