杀死或中断dispatch_queue_t方法

时间:2016-04-08 12:58:22

标签: ios objective-c dispatch-async

使用此代码,我可以在后台执行我的代码。

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul);
        dispatch_async(queue, ^{
            // Perform async operation
            // Call your method/function here
            // Example:
            // NSString *result = [anObject calculateSomething];
            dispatch_sync(dispatch_get_main_queue(), ^{
                // Update UI
                // Example:
                // self.myLabel.text = result;
            });
        });

但我无法找到中断此后台线程的解决方案。有没有杀死或中断队列的方法?

1 个答案:

答案 0 :(得分:3)

您应该使用NSOperationQueue来管理代码流并创建NSOperation个实例以尊重cancelled属性。完成此操作后,您可以轻松暂停队列(暂停执行将来的操作)并取消任何(或所有)操作。

请注意,您有责任将您的操作编写为可取消 - 它需要决定在处理过程中哪些点检查cancelled的状态并中止进一步处理是明智的。