如何取消 performBlock:
How to cancel performBlock:
我实施了搜索,对于用户键入的每个新字符,performFetch:
都会在 performBlock:
内启动。如果搜索字符串发生变化,我想取消之前开始的块并重新开始。我该如何取消或至少通知 performBlock:
内的区块?
我现在的示例代码:
[myManagedObjectContext performBlock:^{
// fetch from background queue
if([[self fetchedResultsController] performFetch:nil]) {
// update the view from the main queue
// don't do this if performBlock already got started again! but how?
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
// refresh UI
}];
}
}];
没有API取消一个performBlock
。一旦开始,它将一直持续到完成或直到您的代码 return
s 来自它。
如果您发现有必要在提取过程中取消提取,请查看 NSAsynchronousFetchRequest
,它允许通过 NSProgress
取消。 WWDC 2014 Core Data session
中描述了异步获取请求和取消
我实施了搜索,对于用户键入的每个新字符,performFetch:
都会在 performBlock:
内启动。如果搜索字符串发生变化,我想取消之前开始的块并重新开始。我该如何取消或至少通知 performBlock:
内的区块?
我现在的示例代码:
[myManagedObjectContext performBlock:^{
// fetch from background queue
if([[self fetchedResultsController] performFetch:nil]) {
// update the view from the main queue
// don't do this if performBlock already got started again! but how?
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
// refresh UI
}];
}
}];
没有API取消一个performBlock
。一旦开始,它将一直持续到完成或直到您的代码 return
s 来自它。
如果您发现有必要在提取过程中取消提取,请查看 NSAsynchronousFetchRequest
,它允许通过 NSProgress
取消。 WWDC 2014 Core Data session