使用此代码,我可以在后台执行我的代码。
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;
});
});
但我无法找到中断此后台线程的解决方案。有没有杀死或中断队列的方法?
答案 0 :(得分:3)
您应该使用NSOperationQueue
来管理代码流并创建NSOperation
个实例以尊重cancelled
属性。完成此操作后,您可以轻松暂停队列(暂停执行将来的操作)并取消任何(或所有)操作。
请注意,您有责任将您的操作编写为可取消 - 它需要决定在处理过程中哪些点检查cancelled
的状态并中止进一步处理是明智的。