ios - 调用 [operation cancelAllOperations] 时 NSOperationQueue 不会停止

标签 ios objective-c xcode nsoperation nsoperationqueue

我在我的 iOS 应用程序中创建了这个队列,我想停止它:

在我的 .h 文件中:

NSOperationQueue *uhm;

在我的 .m 文件中:
在 viewDidLoad:NSOperationQueue *uhm = [[NSOperationQueue alloc] init];
在我的方法中:
[uhm addOperation:[NSBlockOperation blockOperationWithBlock: ^{
        … //Here I do operations that retrive data from my server
        [[NSOperationQueue mainQueue] addOperationWithBlock: ^{
            [self.tableView reloadData];
        }];
    }
    }]];

但是当我调用 [uhm cancelAllOperations]它只是设置 bool 值isCancelled是,但不会停止队列的执行!
请帮我!

最佳答案

取消操作实际上并不会停止任何正在执行的操作。

它只是阻止新的开始。

您必须在操作本身中手动停止任何当前操作。

例如,如果您有收集下载数据的代码,那么在连接数据之前检查操作是否被取消。

如果操作被取消,则结束操作。

enter image description here

有很多方法可以做到这一点。这取决于您的操作内部是什么。

关于ios - 调用 [operation cancelAllOperations] 时 NSOperationQueue 不会停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23930634/

相关文章:

ios - 呈现弹出 View 时,如何让用户在父 Collection View 中选择单元格?

ios - Xcode 8.x 在 XIB 文件中挂起太多

iphone - SSL 错误、NSURLRequest 和无效证书

objective-c - Objective-C 新手,在 Xcode 包中找不到 Foundation 工具

ios - 如何处理 UIView 中的点击事件

iphone - 为 iPad 或 iPhone 加载单独的 XIB 时出现问题

objective-c - Swift 中选定的 CollectionView 单元格外观

ios - 为什么会导致保留循环?

ios - m7/m8 检测运动事件授权是否被拒绝

c++ - 是否有用于从 HTML 页面中提取数据的库?