Я также могу подтвердить, что cancelAllOperations не работает в [NSOperationQueue mainQueue] (по крайней мере, в моем симуляторе iOS 5.0).Может быть намеренно спроектирован так, поскольку это общий экземпляр.
Мой простой обходной путь - просто создать подкласс NSOperation или NSBlockOperation без переопределения чего-либо, а затем сделать что-то вроде этого:
-(void)cancelMyOperationsInMainQueue {
for (NSOperation* o in [[NSOperationQueue mainQueue] operations]) {
if ([o isKindOfClass:[MyOperation class]]) {
[o cancel];
}
}
}