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 に間違った値が入力されます。
新しい値で実行をキャンセルして再開する方法はありますか?