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