我正在使用dispatch_get_global_queue
在后台执行某些任务。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, (unsigned long)NULL), ^(void) {
x=someNumber;
[self dothis:x];
});
-(void)dothis:(int)x{
for (int i=0,i<x,i++){
// Some calculations
dispatch_async(dispatch_get_main_queue(), ^{
myTextview.text = [NSString stringWithFormat:@"%d",x];
});
}
}
现在,当someNumber发生变化时,我想停止dispatch_get_global_queue
并使用新的someNumber
值重新启动它。现在,只要somenumber
值发生变化并再次调用dispatch_get_global_queue
,旧的执行和新执行就会开始有时重合,在textView中输入错误的值。
有没有办法可以使用新值取消并重新启动执行?
答案 0 :(得分:0)
改为使用NSOperation
和NSOperationQueue
。他们一旦开始就更有支持取消任务。