0

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 中放置错误的值。

有没有办法可以取消并使用新值重新开始执行?

4

1 回答 1

0

使用NSOperationandNSOperationQueue代替。一旦开始,他们对取消任务有更多的支持。

于 2013-06-03T10:25:02.127 回答