ios - 取消 NSOperation 完成 block

标签 ios objective-c nsoperation

我有一个 NSOperation 并且在 completionblock 中我做了一些耗时的保存到 CoreData。实际运行速度很快。有时我需要阻止此 completetionblock 运行。我看不到取消它的简单方法,所以我尝试设置 BOOl 并在必要时跳过其中的代码。然而,操作是在单例中运行的,另一个类需要运行队列(这就是为什么我需要取消 completionblock)。关于如何取消 completeionblock 有什么想法吗?

最佳答案

您可以简单地将completionBlock设置为nil:

operation.completionBlock = nil

但我认为从另一个类取消操作的完成 block 可能是一种设计味道。您最终可能会得到难以维护和调试的代码,因为不清楚更改操作流程的原因和时间。

关于ios - 取消 NSOperation 完成 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27602068/

相关文章:

ios - NSURLConnection sendSynchronousRequest 在慢速网络上崩溃

ios - 除了推送来唤醒 iOS 应用程序之外的其他方式?

ios - iOS:只为UINavigationController的根目录隐藏一个viewcontroller的导航栏?

iphone - NSOperationQueue阻止了不相关的NSOperationQueue?

objective-c - Snow Leopard 上的 NSOperationQueue 有多轻量级?

ios - UINavigationController 里面的 UIViewController 当应用程序从后台返回时跳转

iOS 高 rebase /绑定(bind)时间

ios - NSMutableArray 越界错误

ios - 如何打印NSSet的内容?

ios - 将圆角和边框设置为 ios7 中 UISearchBar 的背景(不是 UITextField)